仿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中移除链接信息

启动服务器

测试

相关推荐
虎头金猫1 天前
4K 视频总卡在公网带宽?用 N1 + OpenList 把网盘播放链路重新理顺
运维·服务器·网络·python·容器·beautifulsoup·pandas
AI职业加油站1 天前
AI智能体应用工程师证书:政策红利下的职业新风口
大数据·运维·人工智能·学习·职场发展
此冬歌咏1 天前
K8s 节点故障实战:优雅驱逐 31 秒,硬故障 331 秒,以及那个永远 Pending 的 Pod
运维·k8s
-梅1 天前
linux(8) 软硬链接
linux·运维·服务器
Wang's Blog1 天前
Java 项目实战: 外卖平台-文件下载与ServletOutputStream回写浏览器
服务器·项目开发
张洛闻Eren1 天前
k8s云原生【第十课】:水平 Pod 自动扩缩容
运维·数据库·云原生·kubernetes·github
琥珀色糖1 天前
SimlpeHttp
linux·服务器
其实防守也摸鱼1 天前
内网穿透与反向代理:原理、工具与实战指南
android·大数据·运维·安全·网络安全·自动化·渗透
第十人i1 天前
Linux 日志管理系统:journald 配置与优化
linux·服务器
布裘1 天前
【银河麒麟】V4桌面图标消失,右击鼠标没反应排查
运维·银河麒麟·桌面环境