首先,我们的ChannelBuffer是参考Java开源框架Netty的ChannelBuffer,整个ChannelBuffer的模型如下:
/*****************************************************************************************************
* ChannelBuffer的模型图
* Java Netty ChannelBuffer
* +-------------------+------------------+------------------+
* | prependable bytes | readable bytes | writable bytes |
* | | (CONTENT) | |
* +-------------------+------------------+------------------+
* | | | |
* 0 <= readerIndex <= writerIndex <= size(capacity)
* 在此模型之上,我们扩展buffer是自适应的,即大小是可以改变的
******************************************************************************************************/
整个ChannelBuffer的内部是一个std::vector<char>,它是一块连续的内存。此外,ChannelBuffer还有两个类成员变量