#include "connection.h" #include Connection::Connection(boost::asio::io_service& io_service) : socket(io_service) { } void Connection::handle_read(uint8_t* data, std::size_t bytes, const boost::system::error_code& error) { if(error) { return; } got_data(data, bytes); delete[] data; } void Connection::handle_write() { } void Connection::request_data(std::size_t bytes) { uint8_t* buf = new uint8_t[bytes]; boost::asio::async_read(socket, boost::asio::buffer(buf, bytes), boost::bind(&Connection::handle_read, shared_from_this(), buf, bytes, boost::asio::placeholders::error)); // boost::asio::placeholders::error } void Connection::got_message(const Message::p& msg) { recv_callback(msg); } void Connection::write_data(uint8_t* data, std::size_t bytes) { boost::asio::async_write(socket, boost::asio::buffer(data, bytes), boost::bind(&Connection::handle_write, shared_from_this())); } Connection::p Connection::create(boost::asio::io_service& io_service) { return Connection::p(new Connection(io_service)); } void Connection::recv(boost::function f) { recv_callback = f; start_recv(); }