#include "connectionbase.h" #include #include void ConnectionBase::prepare_next_message() { next_message = Message::create(); request_data(next_message->deserialize(0, 0)); } void ConnectionBase::connected() { std::cout << "Connection established." << std::endl; write_data((uint8_t*)"Hei!\n", 5); prepare_next_message(); } void ConnectionBase::got_data(uint8_t* data, std::size_t bytes) { size_t remaining = next_message->deserialize(data, bytes); if(remaining) { request_data(remaining); } else { recv_queue.push(next_message); prepare_next_message(); } } void ConnectionBase::send(const Message::p& msg) { std::pair smsg = msg->serialize(); write_data(smsg.first, smsg.second); } Message::p ConnectionBase::recv() { if(recv_queue.empty()) { return Message::p(); } Message::p msg = recv_queue.front(); recv_queue.pop(); return msg; }