当前位置: 首页>>代码示例>>C++>>正文


C++ Bundle::packets方法代码示例

本文整理汇总了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);
}
开发者ID:AddictXQ,项目名称:kbengine,代码行数:50,代码来源:websocket_packet_filter.cpp

示例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;
}
开发者ID:sdsgwangpeng,项目名称:kbengine,代码行数:16,代码来源:network_interface.cpp


注:本文中的Bundle::packets方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。