14#include <boost/asio/io_context.hpp>
15#include <boost/asio/ip/tcp.hpp>
16#include <boost/asio/post.hpp>
26 class Listener :
public std::enable_shared_from_this<Listener>,
private NonCopyable {
29 using endpoint = boost::asio::ip::tcp::endpoint;
57 std::move(on_session_opened),
58 std::move(on_session_closed),
59 std::move(on_response));
一块原始数据。 请注意,如果需要更多容量,则会分配一个新的内存块,并 删除旧的内存块。这意味着默认情况下,缓冲区只能增长。要释放内存,使用 clear 或 pop。
boost::asio::io_context & _io_context
std::atomic< time_duration > _timeout
endpoint GetLocalEndpoint() const
std::shared_ptr< Primary > Session
boost::asio::ip::tcp::endpoint endpoint
boost::asio::ip::tcp::acceptor _acceptor
void Listen(callback_function_type on_session_opened, callback_function_type on_session_closed, callback_function_type_response on_response)
开始监听连接。在每个新连接时,会调用on_session_opened, 在会话关闭时调用on_session_closed,同时在收到响应时调用on_response。
void SetTimeout(time_duration timeout)
设置会话超时时间。这只适用于新创建的会话。默认情况下,超时时间设置为10秒。
endpoint::protocol_type protocol_type
std::function< void(std::shared_ptr< Primary >)> callback_function_type
void OpenSession(time_duration timeout, callback_function_type on_session_opened, callback_function_type on_session_closed, callback_function_type_response on_response)
std::function< void(std::shared_ptr< Primary >, carla::Buffer)> callback_function_type_response
Listener(boost::asio::io_context &io_context, endpoint ep)
void OpenSession(time_duration timeout, callback_function_type on_opened, callback_function_type on_closed, callback_function_type_response on_response)
Positive time duration up to milliseconds resolution.