diff --git a/include/NetworkBuffer.hpp b/include/NetworkBuffer.hpp index f25c8d7..672a5e2 100644 --- a/include/NetworkBuffer.hpp +++ b/include/NetworkBuffer.hpp @@ -14,7 +14,7 @@ struct NetworkBuffer NetworkBuffer(); ~NetworkBuffer(); - std::vector header; // contains the size of the body + std::vector header = Utility::BitConverter::FromUint32(8); // contains the size of the body std::vector body; }; diff --git a/src/NetworkMessage.cpp b/src/NetworkMessage.cpp index 3e5dfc9..f7c7d5a 100644 --- a/src/NetworkMessage.cpp +++ b/src/NetworkMessage.cpp @@ -25,7 +25,24 @@ NetworkMessage::~NetworkMessage() const NetworkBuffer &NetworkMessage::EncodeMessage(const NetworkMessage &message) { - return NetworkBuffer(); + NetworkBuffer net_buffer; + + std::vector sender = Utility::BitConverter::FromUint16(message.sender); + std::vector distribution_mode = Utility::BitConverter::FromUint8(message.distribution_mode); + std::vector destination_id = Utility::BitConverter::FromUint16(message.destination_id); + std::vector tag = Utility::BitConverter::FromUint8(message.tag); + std::vector subject = Utility::BitConverter::FromUint16(message.subject); + std::vector data; + if (message.data != nullptr) + data = Serializer::to_bytes(message.data); + + net_buffer.body.insert(net_buffer.body.end(), sender.begin(), sender.end()); + net_buffer.body.insert(net_buffer.body.end(), distribution_mode.begin(), distribution_mode.end()); + net_buffer.body.insert(net_buffer.body.end(), destination_id.begin(), destination_id.end()); + net_buffer.body.insert(net_buffer.body.end(), tag.begin(), tag.end()); + net_buffer.body.insert(net_buffer.body.end(), subject.begin(), subject.end()); + if (message.data != nullptr && data.size() > 0) + net_buffer.body.insert(net_buffer.body.end(), data.begin(), data.end()); } const NetworkMessage &NetworkMessage::DecodeMessage(const NetworkBuffer &buffer)