ACE_Message_Block中有多个获取大小或者长度的函数,容易混淆.下图是根据ACE_Message_Block(实际是ACE_Da
红色表示是ACE_Message_Block独有的函数, 其余则ACE_Message_Block和ACE_Da
矩形纸上函数的返回值均为指针类型,之下的返回值均为size_t类型.
函数 说明
length() 有效数据的长度== wr_ptr() – rd_ptr()
size() 全部可用空间的长度,如果没有size()而变小,则等同capacity()== mark() – base()
space() 剩余可用空间的长度<= size() - length(),因为不含rd_ptr()移动过的空间== mark() – wr_ptr()
capacity() 最大空间的长度(ACE_Message_Block构造或初始化时所用参数值)== end() – base()
total_length() 复合消息(ACE_Message_Block内单向链 cont())的总长度
total_size() 复合消息(ACE_Message_Block内单向链 cont())的总大小
total_capacity() 复合消息(ACE_Message_Block内单向链 cont())的总空间大小
duplicate()浅拷贝函数,公用一个内部的ACE_Da
ACE_Message_Block::duplicate() 与 ACE_Da
ACE_Da
ACE_Message_Block:duplicate()则将自身copy了一份, 然后将自身的状态值赋给拷贝,注意它们公用同一个da
ACE_Message_Block::clone()深拷贝, 不但拷贝自身,内部的ACE_Da
ACE_Da