0 前言
在rpc或分布式节点间的通讯框架里面,我们经常会有“业务数据与二进制流数据之间进行编码或解码转换”的场景要求,在jdk的nio框架里面有既有的ByteBuffer类满足此需求,那么在c++里面,同样我们简单看看,一个具有类似功能的类DataBuffer。
1 实现机制
其实现机制:通过指针偏移指向同一块内存,分别表示内存的起始与结束偏移位置,分别表示读与写的偏移位置。如下图:
2 操作步骤
2.1 读取数据时,仅需偏移_pdata即可
源码如下:
bool readBytes(void *dst, int len) { if (_pdata + len > _pfree) { return false; } memcpy(dst, _pdata, len); _pdata += len; assert(_pfree>=_pdata); return true; }