TcpServer 模块介绍
功能概述
- 设置从属线程池数量。
- 启动服务器。
- 设置多种回调函数(连接建立完成、消息、关闭、任意等),用户设置给
TcpServer,TcpServer再设置给获取的新连接。 - 选择是否启动非活跃连接超时销毁功能。
- 具备添加定时任务功能。
流程
- 在
TcpServer中实例化Acceptor对象和EventLoop对象(baseloop)。 - 将
Acceptor挂到baseloop上进行事件监控。 - 当
Acceptor对象就绪可读事件时,执行读事件回调函数获取新建连接。 - 对新连接,创建
Connection进行管理。 - 对连接对应的
Connection设置功能回调(连接完成回调、消息回调、关闭回调、任意事件回调)。 - 启动
Connection的非活跃连接的超时销毁规则。 - 将新连接对应的
Connection挂到LoopThreadPool中的从属线程对应的EventLoop中进行事件监控。 - 一旦
Connection对应的连接就绪了可读事件,则执行读事件回调函数,读取数据,读取完毕后调用TcpServer设置的消息回调。
成员介绍
成员变量
uint64_t _next_id
- 作用:这是一个全局自增的计数器。
- 用途:每当有一个新连接到来时,
_next_id会加 1,作为这个新连接的唯一 ID (conn_id)。这用于在_conns哈希表中唯一标识和查找连接。
int _port
- 作用:服务器监听的端口号。
int _timeout
- 作用:非活跃连接的超时时间(单位:秒)。
- 用途:如果启用了非活跃销毁功能,当连接在
_timeout秒内没有任何读写事件发生时,服务器会自动断开该连接。
bool _enable_inactive_release
- 作用:功能开关。
- 用途:标记是否开启了'非活跃连接自动销毁'功能。
EventLoop _baseloop
- 作用:主 Reactor(Main Loop)。
- 用途:这是运行在主线程中的事件循环。它只负责一件事情:监听监听套接字(ListenFd)的事件,也就是处理新用户的连接请求。一旦接受连接,它就会把新连接分发给线程池中的从 Reactor。
Acceptor _acceptor
- 作用:连接接受器。
- 用途:它内部封装了监听 Socket。它运行在
_baseloop中,当有新连接到来时,它会执行 accept 系统调用拿到文件描述符,然后调用TcpServer::NewConnection回调函数。


