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

启动服务器

测试

相关推荐
代码AI弗森4 小时前
一文理清楚“算力申请 / 成本测算 / 并发评估”
java·服务器·数据库
^—app5668665 小时前
游戏运存小启动不起来临时解决方法
运维·服务器
Ujimatsu6 小时前
虚拟机安装Debian 13.x及其常用软件(2026.4)
linux·运维·ubuntu
志栋智能6 小时前
超自动化安全:构建智能安全运营的核心引擎
大数据·运维·服务器·数据库·安全·自动化·产品运营
Edward111111118 小时前
4月28日防火墙问题
linux·运维·服务器
想学后端的前端工程师8 小时前
【补充内外网突然不通的情况】
运维·服务器
面汤放盐8 小时前
何时使用以及何时不应使用微服务:没有银弹
java·运维·云计算
子琦啊9 小时前
【算法复习】字符串 | 两个底层直觉,吃透高频题
linux·运维·算法
跨境数据猎手9 小时前
跨境独立站系统技术拆解(附带源码)
服务器·前端·php