12#include <boost/asio/post.hpp>
22 : _io_context(io_context),
23 _acceptor(_io_context,
std::move(ep)),
37 using boost::system::error_code;
39 auto session = std::make_shared<ServerSession>(
_io_context, timeout, *
this);
41 auto handle_query = [on_opened, on_closed, session](
const error_code &ec) {
43 session->Open(std::move(on_opened), std::move(on_closed));
45 log_error(
"tcp accept stream error:", ec.message());
49 _acceptor.async_accept(session->_socket, [=](error_code ec) {
51 boost::asio::post(_io_context, [=, this]() { handle_query(ec); });
std::function< void(std::shared_ptr< ServerSession >)> callback_function_type
boost::asio::io_context & _io_context
boost::asio::ip::tcp::endpoint endpoint
void OpenSession(time_duration timeout, ServerSession::callback_function_type on_session_opened, ServerSession::callback_function_type on_session_closed)
Server(boost::asio::io_context &io_context, endpoint ep)
boost::asio::ip::tcp::acceptor _acceptor
Positive time duration up to milliseconds resolution.
This file contains definitions of common data structures used in traffic manager.
void SetSocketCloseOnExec(NativeHandle fd)
Marks a socket file descriptor close-on-exec, so it is not inherited by child processes started via f...
static void log_error(Args &&... args)