session::handle_read session::handle_write server::server ... - Asio

10 downloads 72 Views 21KB Size Report
This is a cool function. void start(). {. // Start an async read. socket_. async_read_some(asio::buffer(data_, max_length), boost::bind(&session:: handle_read, this,.
server::server server(asio::io_service& io_service, short port) : io_service_(io_service), acceptor_(io_service, tcp::endpoint(tcp::v4(), port)) { session* new_session = new session(io_service_); acceptor_.async_accept(new_session->socket(), boost::bind(&server::handle_accept, this, new_session, asio::placeholders::error)); }

server::handle_accept void handle_accept(session* new_session, const asio::error_code& error) { if (!error) { new_session->start(); new_session = new session(io_service_); acceptor_.async_accept(new_session->socket(), boost::bind(&server::handle_accept, this, new_session, asio::placeholders::error)); } else { delete new_session; } }

session::start // This is a cool function. void start() { // Start an async read. socket_.async_read_some(asio::buffer(data_, max_length), boost::bind(&session::handle_read, this, asio::placeholders::error, asio::placeholders::bytes_transferred)); }

session::handle_read void handle_read(const asio::error_code& error, size_t bytes_transferred) { if (!error) { asio::async_write(socket_, asio::buffer(data_, bytes_transferred), boost::bind(&session::handle_write, this, asio::placeholders::error)); } else { delete this; } }

session::handle_write void handle_write(const asio::error_code& error) { if (!error) { socket_.async_read_some(asio::buffer(data_, max_length), boost::bind(&session::handle_read, this, asio::placeholders::error, asio::placeholders::bytes_transferred)); } else { delete this; } }

Suggest Documents