这一次我们来分析下muduo
中Buffer
的作用,我们知道,当我们客户端向服务器发送数据时候,服务器就会读取我们发送的数据,然后进行一系列处理,然后再发送到其他地方,在这里我们想象一下最简单的EchoServer
服务器,客户端建立一个连接,以后服务器和客户端之间的通信都是通过这个connfd
发送和接受数据,于是每一个connfd
都应该有一个自己buffer
,当我们发送数据太快,服务器发送的太慢,则服务器会将待发送的数据这个buffer
中,所以这就是这个类的作用。我们先看下buffer
的结构是什么:
我们这里主要针对connfd
这个对应的channel
进行分析,首先上图是buffer
的初始状态,前面8
个字节中表示该buffer
的大小,初始大小为1024
。当客户端发送数据给服务器,同时若服务器接受缓慢,则会向buffer
中开始写数据,则writerIndex_
会向右移动,假如此时移动到如下形式:
</