cpputil/test/server/session.cpp
2014-11-17 23:57:03 +03:00

30 lines
716 B
C++

#include "session.h"
#include <iostream>
#include <boost/asio/spawn.hpp>
session::session(boost::asio::io_service &io_service): _socket(io_service)
{
}
void session::start()
{
boost::asio::spawn(_socket.get_io_service(), [this](boost::asio::yield_context yield){
for(;;)
{
std::size_t bytes = _socket.async_read_some(boost::asio::buffer(_data, 128), yield);
int n = async_call<int>([this]{
int n = std::atoi(_data);
return n*n;
}, yield);
_socket.async_write_some(boost::asio::buffer(std::to_string(n) + "\n"), yield);
}
});
}
boost::asio::ip::tcp::socket& session::socket()
{
return _socket;
}