muduo库源码分析: TcpConnection

一. 主要成员:

  • socket_:用于保存已连接套接字文件描述符。
  • channel_:封装了上面的socket_及其各类事件的处理函数(读、写、错误、关闭等事件处理函数)。这个Channel中保存的各类事件的处理函数是在TcpConnection对象构造函数中注册的
  • loop_:这是一个EventLoop*类型,该Tcp连接的Channel注册到了哪一个sub EventLoop上。这个loop_就是那一个sub EventLoop。
  • inputBuffer_:这是一个Buffer类,是该TCP连接对应的用户接收缓冲区。
  • outputBuffer_:也是一个Buffer类,不过是用于暂存那些暂时发送不出去的待发送数据。因为Tcp发送缓冲区是有大小限制的,假如达到了高水位线,就没办法把发送的数据通过send()直接拷贝到Tcp发送缓冲区,而是暂存在这个outputBuffer_中,等TCP发送缓冲区有空间了,触发可写事件了,再把outputBuffer_中的数据拷贝到Tcp发送缓冲区中。
  • state_:这个成员变量标识了当前TCP连接的状态(Connected、Connecting、Disconnecting、Disconnected)
  • connetionCallback_、messageCallback_、writeCompleteCallback_、closeCallback_ :用户会自定义 [连接建立/关闭 的处理函数] 、[收到消息 的处理函数]、[消息发送完 的处理函数]以及Muduo库中定义的[连接关闭的处理函数]。这四个函数都会分别注册给这四个成员变量保存。

二.主要接口:

相关推荐
hetao17338372 小时前
2025-12-12~14 hetao1733837的刷题笔记
数据结构·c++·笔记·算法
华仔啊2 小时前
这 10 个 MySQL 高级用法,让你的代码又快又好看
后端·mysql
椰子今天很可爱2 小时前
五种I/O模型与多路转接
linux·c语言·c++
码事漫谈2 小时前
国产时序数据库崛起:金仓凭什么在复杂场景中碾压InfluxDB
后端
上进小菜猪2 小时前
当时序数据不再“只是时间”:金仓数据库如何在复杂场景中拉开与 InfluxDB 的差距
后端
程序员zgh3 小时前
C++ 互斥锁、读写锁、原子操作、条件变量
c语言·开发语言·jvm·c++
鲨莎分不晴3 小时前
强化学习第五课 —— A2C & A3C:并行化是如何杀死经验回放
网络·算法·机器学习
六行神算API-天璇3 小时前
架构思考:大模型作为医疗科研的“智能中间件”
人工智能·中间件·架构·数据挖掘·ar
盖世英雄酱581363 小时前
springboot 项目 从jdk 8 升级到jdk21 会面临哪些问题
java·后端
程序猿DD4 小时前
JUnit 5 中的 @ClassTemplate 实战指南
java·后端