#ifndef _SESSION_H_ #define _SESSION_H_ #include "threadpool.h" #include class session { private: typedef boost::asio::ip::tcp tcp; private: tcp::socket _socket; char _data[128]; threadpool _pool; public: session() = delete; session(session&) = delete; session(boost::asio::io_service& io_service); void start(); tcp::socket& socket(); template R async_call(std::function func, CompletionToken&& token) { typename boost::asio::handler_type::type handler(std::forward(token)); boost::asio::async_result result(handler); _pool.add_task([this, handler, &func]{ _socket.get_io_service().dispatch(std::bind(handler, func())); }); return result.get(); } }; #endif // _SESSION_H_