#include "message.h" #include #include #include std::pair Message::serialize() { //std::size_t s = payload.size(); //uint8_t* buf = new uint8_t[4 + s]; //*(uint16_t*)buf = (uint16_t)s; //memcpy(buf + 4, payload.c_str(), payload.size()); //return std::pair(buf, 4 + s); return std::pair(0, 0); } std::size_t Message::deserialize(uint8_t* data, std::size_t bytes) { if(deserialize_size == 0 && bytes == 0) { return 4; } if(deserialize_size == 0 && bytes == 4) { uint16_t* header = (uint16_t*)data; deserialize_size = (std::size_t)header[0]; payload_type = (Payload::Type)header[1]; return deserialize_size; } if(!deserialize_size) { throw std::runtime_error("Deserialization header error."); } if(bytes != deserialize_size) { throw std::runtime_error("Deserialization attempted with incomplete data."); } //payload = std::string((char*)data, bytes); return 0; } Message::Message() : deserialize_size(0) { } Message::p Message::create() { return Message::p(new Message); } Payload::Type Message::type() { return payload_type; }