My Project
Loading...
Searching...
No Matches
MessageAssembler.hpp
1#pragma once
2
3#include <map>
4#include <vector>
5#include <string>
6#include <optional>
7#include "message/MessageFrame.hpp"
8
10{
11 MessageHeader header;
12 std::string payload;
13};
14
16private:
17 std::map<std::string, std::vector<MessageFrame>> incompleteMessages;
18
19public:
25 std::optional<std::string> addFragment(const MessageFrame& frame);
26
32 bool isMessageComplete(const std::string& messageId) const;
33
39 std::optional<std::string> getAssembledMessage(const std::string& messageId);
40
46 std::optional<MessageType> getMessageType(const std::string& messageId) const;
47
52 void cleanup(const std::string& messageId);
53
58 size_t getIncompleteMessageCount() const;
59};
Definition MessageAssembler.hpp:15
bool isMessageComplete(const std::string &messageId) const
Checks if message is complete.
Definition MessageAssembler.cpp:16
void cleanup(const std::string &messageId)
Cleans up message fragments after processing.
Definition MessageAssembler.cpp:102
std::optional< MessageType > getMessageType(const std::string &messageId) const
Gets the message type of completed message.
Definition MessageAssembler.cpp:93
size_t getIncompleteMessageCount() const
Gets number of incomplete messages.
Definition MessageAssembler.cpp:106
std::optional< std::string > getAssembledMessage(const std::string &messageId)
Gets the complete assembled message.
Definition MessageAssembler.cpp:69
std::optional< std::string > addFragment(const MessageFrame &frame)
Adds a fragment to the assembler.
Definition MessageAssembler.cpp:5
Definition MessageAssembler.hpp:10
Definition MessageFrame.hpp:34