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库中定义的[连接关闭的处理函数]。这四个函数都会分别注册给这四个成员变量保存。

二.主要接口:

相关推荐
fqbqrr2 分钟前
2510d,C++虚混杂
c++·d
间彧9 分钟前
Redis Stream相比阻塞列表和发布订阅有哪些优势?适合什么场景?
后端
间彧14 分钟前
Redis阻塞弹出和发布订阅模式有什么区别?各自适合什么场景?
后端
科比不来it17 分钟前
Go语言数据竞争Data Race 问题怎么检测?怎么解决?
开发语言·c++·golang
大面积秃头20 分钟前
Http基础协议和解析
网络·网络协议·http
苏三说技术22 分钟前
统计接口耗时的6种常见方法
后端
SimonKing27 分钟前
Mybatis-Plus的竞争对手来了,试试 MyBatis-Flex
java·后端·程序员
我命由我1234539 分钟前
PDFBox - PDFBox 加载 PDF 异常清单(数据为 null、数据为空、数据异常、文件为 null、文件不存在、文件异常)
java·服务器·后端·java-ee·pdf·intellij-idea·intellij idea
给大佬递杯卡布奇诺42 分钟前
FFmpeg 基本API av_seek_frame函数内部调用流程分析
c++·ffmpeg·音视频
渣哥44 分钟前
当容器里有多个 Bean,@Qualifier 如何精准定位?
javascript·后端·面试