1#ifndef NEFORCE_NETWORK_TCP_TCP_SERVER_HPP__
2#define NEFORCE_NETWORK_TCP_TCP_SERVER_HPP__
16NEFORCE_BEGIN_NAMESPACE__
137 virtual bool start(
int backlog = SOMAXCONN)
noexcept;
175 void create_acceptor(
const ip_address& endpoint,
int backlog)
override;
220 void create_acceptor(
const ip_address& endpoint,
int backlog)
override;
266 bool start(
int backlog = SOMAXCONN)
noexcept override;
271NEFORCE_END_NAMESPACE__
bool start(int backlog=SOMAXCONN) noexcept override
启动SSL服务器
const ssl_context & get_ssl_context() const noexcept
获取常量SSL上下文
void set_ssl_context(ssl_context ctx)
设置SSL上下文
ssl_server(ports port, io_context &ctx, size_t worker_count=0)
构造函数
ssl_context & get_ssl_context() noexcept
获取SSL上下文
bool load_certificate(const string &cert_file, const string &key_file)
加载证书和私钥
function< void(const exception &)> exception_handler_t
异常处理器类型
client_handler_t client_handler_
客户端处理器
function< void(unique_ptr< tcp_socket >)> client_handler_t
客户端处理器类型
virtual bool start(int backlog=SOMAXCONN) noexcept
启动服务器
atomic< bool > running_
运行标志
void accept_loop()
接受连接的主循环
bool set_exception_handler(exception_handler_t handler)
设置异常处理器
io_context & ctx_
异步 I/O 执行上下文
virtual void create_acceptor(const ip_address &endpoint, int backlog)=0
创建并配置acceptor
bool is_running() const noexcept
检查服务器是否运行中
exception_handler_t exception_handler_
异常处理器
virtual optional< unique_ptr< tcp_socket > > accept_one()=0
创建一个客户端连接
unique_ptr< io_context::work > ctx_work_
io_context 工作守卫
ports port() const noexcept
获取监听端口
size_t worker_count_
工作线程数
bool set_client_handler(client_handler_t handler)
设置客户端处理器
virtual ~tcp_server_base()
析构函数
vector< thread > worker_threads_
工作线程列表(含 accept 线程)
unique_ptr< tcp_acceptor > acceptor_
TCP接受器
tcp_server_base(ports port, io_context &ctx, size_t worker_count=0)
构造函数
mutex acceptor_mutex_
TCP接受器互斥锁
virtual void handle_client(unique_ptr< tcp_socket > client)
处理单个客户端连接
tcp_server_base(ports port, io_context &ctx, size_t worker_count=0)
构造函数
constexpr Iterator2 move(Iterator1 first, Iterator1 last, Iterator2 result) noexcept(noexcept(inner::__move_aux(first, last, result)))
移动范围元素