本文整理汇总了C++中Bundle::packets方法的典型用法代码示例。如果您正苦于以下问题:C++ Bundle::packets方法的具体用法?C++ Bundle::packets怎么用?C++ Bundle::packets使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Bundle
的用法示例。
在下文中一共展示了Bundle::packets方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: send
//-------------------------------------------------------------------------------------
Reason WebSocketPacketFilter::send(Channel * pChannel, PacketSender& sender, Packet * pPacket)
{
if(pPacket->encrypted())
return PacketFilter::send(pChannel, sender, pPacket);
Bundle* pBundle = pPacket->pBundle();
TCPPacket* pRetTCPPacket = TCPPacket::ObjPool().createObject();
websocket::WebSocketProtocol::FrameType frameType = websocket::WebSocketProtocol::BINARY_FRAME;
if(pBundle && pBundle->packets().size() > 1)
{
bool isEnd = pBundle->packets().back() == pPacket;
bool isBegin = pBundle->packets().front() == pPacket;
if(!isEnd && !isBegin)
{
frameType = websocket::WebSocketProtocol::NEXT_FRAME;
}
else
{
if(!isEnd)
{
frameType = websocket::WebSocketProtocol::INCOMPLETE_BINARY_FRAME;
}
else
{
frameType = websocket::WebSocketProtocol::END_FRAME;
}
}
}
websocket::WebSocketProtocol::makeFrame(frameType, pPacket, pRetTCPPacket);
int space = pPacket->length() - pRetTCPPacket->space();
if(space > 0)
{
WARNING_MSG(fmt::format("WebSocketPacketFilter::send: no free space, buffer added:{}, total={}.\n",
space, pRetTCPPacket->size()));
pRetTCPPacket->data_resize(pRetTCPPacket->size() + space);
}
(*pRetTCPPacket).append(pPacket->data() + pPacket->rpos(), pPacket->length());
pRetTCPPacket->swap(*(static_cast<KBEngine::MemoryStream*>(pPacket)));
TCPPacket::ObjPool().reclaimObject(pRetTCPPacket);
pPacket->encrypted(true);
return PacketFilter::send(pChannel, sender, pPacket);
}
示例2: send
//-------------------------------------------------------------------------------------
Reason NetworkInterface::send(Bundle & bundle, Channel * pChannel)
{
Reason reason = REASON_SUCCESS;
const Bundle::Packets& pakcets = bundle.packets();
Bundle::Packets::const_iterator iter = pakcets.begin();
for (; iter != pakcets.end(); iter++)
{
reason = this->sendPacket((*iter), pChannel);
if(reason != REASON_SUCCESS)
break;
}
bundle.onSendComplete();
return reason;
}