仿muduo库实现高并发服务器---服务器TcpServer模块

目录

一、目的

二、管理

三、功能

四、流程

五、成员变量

五、成员函数


一、目的

对所有模块的整合,通过Tcpserver模块实例化的对象,可以完成一个非常简单的服务器的搭建

二、管理

1、Accptor对象,创建一个监听套接字

2、EventLoop对象,baseloop对象,实现对监听套接字的事件监听

3、std::unordered_map<uint64_t, PtrConnection> _conns

4、LoopThreadPool 对象,创建loop线程池,对新链接的管理

三、功能

1、设置从属线程池的而数量

2、启动服务器

3、设置各种回调函数(链接建立成功消息,关闭 、任意)用户设置给TcpServer,TcpServer设置给获取的新连接

4、是否启动非活跃连接的销毁功能

5、添加定时任务功能

四、流程

1、TcpServer中实例化一个Accptor对象,以及一个EventLoop对象(baseloop)

2、Accptor对象挂到baseloop进行时间监控

3、一旦Accptor对象就绪了可读事件,则执行读事件回调获取新的链接

4、对新连接创建一个Connection进行管理

5、对连接对应Conntion设置功能回调(链接完成回调,消息回调,关闭回调,任意事件回调)

6、启动Connection非活跃链接的超时销毁规则

7、对新链接对应的Connection挂到LoopThreadPool中,从属线程的EventLoop中进行事件监控

8、一旦Connection对应的链接就绪了可读事件,则这时候之心读事件回调函数,读取数据,读取完毕调用TcpServer设置信息回调

五、成员变量

一个自动增长的链接 int _next_id

非活跃链接的统计事件 int _timeout

监听套接字的管理对象 Acceptor _acceptor

主线程的EventLoop对象,负责监听事件处理 EventLoop

这是EventLoop线程池 LoopThreadpool _pool

保存所有链接对应的Shared_ptr std::unordered_map<uint64_t, PtrConnection> _conns;

四个回调函数

五、成员函数

构造函数

设置 _acceptor的回调函数,设置可读状态

设置线程数目

设置四个回调函数

启动非活跃链接销毁

添加定时任务

因为要在该线程中所以加入队列

从管理Connetion中的_conns中移除链接信息

启动服务器

测试

相关推荐
像风一样自由20204 小时前
52.Docker部署大模型应用从本地开发到服务化运行
运维·人工智能·docker·容器·大模型·智能体
sxgzzn4 小时前
如何利用电缆故障定位在线监测系统提升供电安全?
运维·重构·无人机·开关柜局放在线监测·gis局放在线监测
mengchanmian5 小时前
VSFTP 服务器搭建(Centos)
运维·服务器·centos
别动我齐刘海6 小时前
Linux 系统调试学习1
linux·运维·服务器·c++·学习·机器学习·机器人
不像程序员的程序媛8 小时前
linux常见文本操作命令
linux·运维·服务器
wangbing11258 小时前
开发指南149-IotDB-常用命令
linux·运维·iotdb
Dovis(誓平步青云)8 小时前
常用命令藏得太深?怎么做一个快捷命令坞
运维·前端·自动化·音视频·prometheus
志栋智能8 小时前
运维超自动化的知识管理与传承
运维·自动化
蜗牛互联网9 小时前
Python Agent工具调用的白名单、参数校验与审批门禁
java·服务器·前端·人工智能·后端·python
jack186899 小时前
OpenClaw 数据采集与自动化应用场景指南
运维·自动化