muduo网络库——Buffer类的设计与使用

muduo Buffer设计要点
1.一块连续的内存(char *p, int len)。

2.size()可以自动增长,以适应不同大小的消息。

3.内部以std::vector<char>来保存数据,并提供相应的访问函数。

 

Buffer像一个queue,从末尾写入数据,从头部读出数据。

TcpConnection会有两个Buffer成员:input buffer, output buffer

1.input buffer, TcpConnection会从socket读取数据,然后写入input buffer (用Buffer::readFd()完成);客户代码从input buffer读取数据。

2.output buffer, 客户代码会把数据写入output buffer( 用TcpConnection::send()完成);TcpConnection从output buffer读取数据并写入socket。

 

Buffer的数据结构

Buffer的内部是一个std::vector<char>,有两个成员指向该vector中的元素。如图所示:

两个index把vector的内容分为三块:prependable, readable, writable

各块大小:

  prependable = readIndex

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值