cpp11chat/chat_networking.hpp

35 lines
814 B
C++

#include <iostream>
#include <functional>
#include <boost/asio.hpp>
#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(asio::io_service& ioservice, tcp::resolver::query query)
:_ios(ioservice)
{
asio::async_connect(_socket,tcp::resolver().resolve(query),
std::bind(&client_network_manager::handshake, this));
}
};