从socket流中 填充protobuffer

void CBufFIFO::front (vector<uint8> &buffer)
{
uint8 *tmpbuffer;
uint32 s;


buffer.clear ();


front (tmpbuffer, s);


buffer.resize (s);


CFastMem::memcpy (&(buffer[0]), tmpbuffer, s);


/* TTicks before = CTime::getPerformanceTime ();


uint8 *tail = _Tail;


buffer.clear ();


if (empty ())
{
nlwarning("Try to get the front of an empty fifo!");
return;
}


_Fronted++;


if (_Rewinder != NULL && tail == _Rewinder)
{
#if DEBUG_FIFO
nldebug("%p front rewind!", this);
#endif


// need to rewind
tail = _Buffer;
}


TFifoSize size = *(TFifoSize *)tail;


#if DEBUG_FIFO
nldebug("%p front(%d)", this, size);
#endif


tail += sizeof (TFifoSize);


buffer.resize (size);


CFastMem::memcpy (&(buffer[0]), tail, size);


// stat code
TTicks after = CTime::getPerformanceTime ();
_FrontedTime += after - before;


#if DEBUG_FIFO
display ();
#endif
*/}




void CBufFIFO::front (NLMISC::CMemStream &buffer)
{
uint8 *tmpbuffer;
uint32 s;


buffer.clear ();


front (tmpbuffer, s);


buffer.fill (tmpbuffer, s);


/*
TTicks before = CTime::getPerformanceTime ();


uint8 *tail = _Tail;


buffer.clear ();


if (empty ())
{
nlwarning("Try to get the front of an empty fifo!");
return;
}


_Fronted++;


if (_Rewinder != NULL && tail == _Rewinder)
{
#if DEBUG_FIFO
nldebug("%p front rewind!", this);
#endif


// need to rewind
tail = _Buffer;
}


TFifoSize size = *(TFifoSize *)tail;


#if DEBUG_FIFO
nldebug("%p front(%d)", this, size);
#endif


tail += sizeof (TFifoSize);


//buffer.resize (size);
//CFastMem::memcpy (&(buffer[0]), tail, size);


buffer.fill (tail, size);


// stat code
TTicks after = CTime::getPerformanceTime ();
_FrontedTime += after - before;


#if DEBUG_FIFO
display ();
#endif*/
}


void CBufFIFO::front (uint8 *&buffer, uint32 &s)
{
#if STAT_FIFO
TTicks before = CTime::getPerformanceTime ();
#endif


uint8 *tail = _Tail;


if (empty ())
{
nlwarning("BF: Try to get the front of an empty fifo!");
return;
}


_Fronted++;


if (_Rewinder != NULL && tail == _Rewinder)
{
#if DEBUG_FIFO
nldebug("%p front rewind!", this);
#endif


// need to rewind
tail = _Buffer;
}


s = *(TFifoSize *)tail;


#if DEBUG_FIFO
nldebug("%p front(%d)", this, s);
#endif


tail += sizeof (TFifoSize);


#if STAT_FIFO
// stat code
TTicks after = CTime::getPerformanceTime ();
_FrontedTime += after - before;
#endif


#if DEBUG_FIFO
display ();
#endif


buffer = tail;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值