thrift之TTransport层的内存缓存传输类TMemoryBuffer

17 篇文章 2 订阅

内存缓存是简单的在内存进行读写操作的一种传输,任何时候想在上面写入数据都是放入缓存中,任何时候读操作数据也是来至于缓存。内存缓存的分配使用c语言的malloc类函数,分配的长度是需要长度的两倍,需要考虑这些内存缓存的使用范围。

同样这个类继承至缓存基类TBufferBase,默认的缓存大小是1024(static const uint32_t defaultSize = 1024;),所有的构造函数都调用函数initCommon,这个函数实现如下:

 voidinitCommon(uint8_t* buf, uint32_t size, bool owner, uint32_t wPos) {
    if (buf== NULL && size != 0) {//如果传递过来的buf为null并且size不为0
     assert(owner);//断言这个内存缓存是不是自己所有,不是就报错不继续执行后面的代码了
      buf =(uint8_t*)std::malloc(size);//是自己拥有的内存缓存就自己分配size大小的内存作为缓存
      if(buf == NULL) {
       throw std::bad_alloc();//分配失败抛出异常
      }
    }
    buffer_= buf;//初始化缓存成员变量
   bufferSize_ = size;//大小
 
    rBase_= buffer_;基地址
    rBound_= buffer_ + wPos;//界限
   
    wBase_= buffer_ + wPos;//写缓存基地址
    wBound_= buffer_ + bufferSize_;
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

蔷薇理想人生

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值