#include #include #include #include "chat_messages.hpp" class client_network_manager { using namespace boost; using boost::asio::ip::tcp; private: asio::io_service _ios; tcp::socket _socket; asio::streambuf _sb; std::istream _is{&sb}; std::ostream _os{&sb}; void handshake(boost::system::error_code ec, size_t) { if (ec) throw std::runtime_error("Networking error: " + ec.message()); // TODO: do handshake & read-loop } public: client_network_manager(tcp::resolver::query query) { asio::async_connect(_socket,tcp::resolver().resolve(query), std::bind(&client_network_manager::handshake, this)); } void send(chat_message message) { _ios.post([this, message] { asio::async_write(_socket, asio::buffer(message.get()), []{}); }); } };