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

启动服务器

测试

相关推荐
杨浦老苏6 小时前
家庭实验室监控仪表盘HomeLab-Monitor
运维·docker·监控·群晖
回忆2012初秋7 小时前
【Nginx】原理、配置与运维实战(2)
运维·nginx·策略模式
Urbano8 小时前
工装外套全制作流程、工序痛点及自动化设备升级方案
运维·自动化
映翰通朱工8 小时前
工业4G网关无公网IP远程运维实战(内网终端异地访问方案)
运维·服务器·网络·安全·智能路由器
洪晓露8 小时前
将 rke2 集群证书延长至 10 年
运维·服务器·数据库
谢平康8 小时前
解决用 rm 报bash: /usr/bin/rm: Argument list too long错
linux·运维·运维开发
IP老炮不瞎唠9 小时前
Python 价格监控如何实现?思路与实用方法分享
运维·服务器·网络
GIS数据转换器9 小时前
城市排水生命线安全运行监测平台深度解析
java·运维·人工智能·python·安全·数据挖掘·无人机
睡不醒男孩0308239 小时前
CLup 6.x 版本中针对StarRocks 存算一体集群的完整操作手册
java·服务器·网络·clup
Tokai_Teio_19 小时前
第四届黄河流域 misc
运维·服务器