cpp11chat/text_message.cpp

56 lines
996 B
C++

#include "text_message.h"
using namespace boost;
text_message::text_message() {}
text_message::text_message(std::string text):_text(text)
{}
std::string text_message::get_text()
{ return _text; }
std::string text_message::get_message_length()
{
auto sizetext = std::to_string(_text.size());
return std::string(sizeof(size_t) - sizetext.size(), '0').append(sizetext);
}
std::string text_message::get_message()
{
return _text;
}
void text_message::receive(boost::asio::ip::tcp::socket& socket)
{
system::error_code ec;
asio::streambuf sb;
std::istream is(&sb);
std::string data;
asio::read(socket, sb, asio::transfer_exactly(sizeof(size_t)), ec);
is >> data;
size_t len = std::stoull(data);
asio::read(socket, sb, asio::transfer_exactly(len), ec);
data.clear();
is.clear();
is >> data;
if (ec)
throw std::runtime_error("Networking error: " + ec.message());
_text = data;
}
text_message::~text_message()
{}