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

启动服务器

测试

相关推荐
镜子AI8 小时前
镜子AI 技术复盘:三条自动化链路上的“停止条件“设计
运维·人工智能·自动化
tianyuanwo8 小时前
NetBox 数据库详解:当“关系型数据库”被装进一个网络运维的领域模型里
运维·数据库·netbox
知已难寻10 小时前
03 · OpenStack的计算管理 Nova
运维·服务器·开发语言·云原生·云计算·openstack·开源软件
huainingning11 小时前
Windows syslog日志服务器搭建与模拟器对接
运维·服务器·智能路由器
say_fall11 小时前
【Linux系统编程】Ext 文件系统:磁盘与存储、文件与目录、现代计算机究竟如何寻找文件
linux·运维·服务器·数据库·c++
wacsii12 小时前
【Linux进程(一)】Linux 进程初探:操作系统如何管理进程?fork() 为什么返回两次?
linux·运维·服务器
共享家952712 小时前
408 操作系统第一章
服务器·数据库·windows
相思难忘成疾12 小时前
从零搭建 Kubernetes 1.30 集群:kubeadm 部署一主多从实战(RHEL 9.3 + Docker + flannel)
linux·运维·kubernetes
PellyKoo12 小时前
【docker】cifs卷改smb密码后容器起不来的解决方法
运维·docker·容器
云飞云共享云桌面12 小时前
1台SolidWorks服务器如何承载10个设计并发?
运维·服务器·网络·3d·制造