30 lines
716 B
C++
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;
|
|
}
|