项目模块1~12总结:服务器大模块梳理

一、思维导图

二、设计思路

1、各种回调函数梳理

服务器里面包含了监听套接字和监听到的通信套接字(新连接),我们要对这两种套接字进行设置回调函数,其中监听套接字里面只要设置读回调,通信套接字要设置5种回调(读,写,任意事件,错误,连接关闭),而要设置出完整的通信套接字5种回调函数就需要外部传入5种回调函数进行补充(任意事件,本地关闭连接,服务器关闭连接,连接建立,业务处理),其中服务器连接关闭是在 TcpServer 类的私有函数里面自己实现了所以没有专门的设置服务器连接关闭的公有函数,而在 TcpServer 里面是虽然有专门的设置任意事件,但外部根本没传入的原因是在构造 Connection 时里面就设置了任意事件回调,当然其他事件回调也设置了,但是任意事件回调是唯一一个独立的回调函数,所以只要设置一次就能完成所有连接的任意事件回调。

分析完通信套接字的回调函数后分析监听套接字的读回调,监听套接字需要对接收的通信套接字进行处理(用 Connection 管理,设置通信套接字的5种回调,开启超时连接销毁,启动连接,添加连接),处理的过程中就有设置通信套接字的5种回调,所以这就是为什么 TcpServer 模块也要有传入外部4个回调函数的原因。

总结:外部传入的是三个回调函数:连接建立,连接关闭,业务处理,用于设置 TcpServer 模块内部的监听套接字读回调和通信套接字的5种回调:读,写,任意,错误,关闭

2、其他成员梳理

EventLoop _baseloop 作为模型中的主 Reactor,LoopThreadPool _pool 作为模型中的存放从 Reactor 共同实现主从 Reactor 模型。

相关推荐
未来之窗软件服务2 分钟前
服务器运维(十九)web服务管理Nginx UI介绍——东方仙盟炼气期
运维·服务器·服务器运维·东方仙盟
梦想的旅途26 分钟前
企业微信外部群消息自动化:模拟操作与工程化实现路径探讨
运维·服务器
代码游侠14 分钟前
学习笔记——Linux进程间通信(IPC)
linux·运维·笔记·学习·算法
郝学胜-神的一滴14 分钟前
Linux C++ 守护进程开发指南
linux·运维·服务器·开发语言·c++·程序人生·性能优化
爬山算法20 分钟前
Netty(20)如何实现基于Netty的WebSocket服务器?
服务器·websocket·网络协议
云和数据.ChenGuang22 分钟前
OpenEuler 系统中安装 MySQL
运维·数据库·mysql·adb·运维工程师·运维技术
wniuniu_23 分钟前
ceph中的rbd的稀疏写入
java·服务器·数据库
牛奶咖啡1324 分钟前
Linux线上服务器掉电后无法启动故障的分析与修复实践——及其隐患解决(标准分区扩容、逻辑分区缩容与扩容)
服务器·系统掉电后无法启动故障排查解决·根分区满后重启无法进入系统·解决根分区满后故障分析解决·修复根分区满后系统故障·逻辑卷分区的缩容与扩容·标准分区的扩容
为什么不问问神奇的海螺呢丶29 分钟前
SFTP搭建-自动检测上传文件修改权限-rsync 自动同步到其他服务器
运维·服务器
山沐与山31 分钟前
【Docker】Docker容器技术详解
运维·docker·容器