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