本文整理汇总了C++中PacketStream::re_head方法的典型用法代码示例。如果您正苦于以下问题:C++ PacketStream::re_head方法的具体用法?C++ PacketStream::re_head怎么用?C++ PacketStream::re_head使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类PacketStream
的用法示例。
在下文中一共展示了PacketStream::re_head方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: parseInputPacket
void LoginServerSession::parseInputPacket()
{
PacketStream * ps = NULL;
int msg_length = 0;
// try
{
msg_length = m_input_msg_block.length();
while(true)
{
if (m_input_msg_block.length() < sizeof(Header))
{
break;
}
ps = new PacketStream();
memcpy(ps->re_head(), m_input_msg_block.rd_ptr(), ps->head_size());
if (m_input_msg_block.length() >= ps->head_size() + ps->body_size())
{
m_input_msg_block.rd_ptr(ps->head_size());
if (ps->body_size() > 0)
{
memcpy(ps->re_body(), m_input_msg_block.rd_ptr(), ps->body_size());
m_input_msg_block.rd_ptr(ps->body_size());
}
else
{
// do nothing
}
// ManageStat::instance()->statClientInputTraffic(ps->stream_size(), 1);
ManageClientValidation::instance()->handlePackage(ps);
msg_length = m_input_msg_block.length();
}
else
{
delete ps;
break;
}
}
if (m_input_msg_block.rd_ptr() != m_input_msg_block.base())
{
msg_length = m_input_msg_block.length();
if (msg_length > 0)
{
memcpy(m_input_msg_block.base(), m_input_msg_block.rd_ptr(), msg_length);
}
m_input_msg_block.rd_ptr(m_input_msg_block.base());
m_input_msg_block.wr_ptr(m_input_msg_block.base() + msg_length);
}
}
//catch (...)
//{
// GATE_LOG_ERROR(ACE_TEXT("Raise unknown exception in LoginServerSession::parseInputPacket, last error is <%d>\n"), ACE_OS::last_error());
//}
}