bool SFCGSFPacketProtocol::Encode(BasePacket* pPacket, char** ppBuffer, int& bufferSize)
{
	SFPacket* pSFPacket = (SFPacket*)pPacket;
	
	if (false == pSFPacket->Encode(m_packetSize, m_packetOption))
		return false;

	*ppBuffer = (char*)pSFPacket->GetHeader();
	bufferSize = pSFPacket->GetPacketSize();

	return true;
}
示例#2
0
void PacketSendThread(void* Args)
{
	SFEngine* pEngine = (SFEngine*)Args;
	INetworkEngine* pNetworkEngine = pEngine->GetNetworkEngine();

	while (SFEngine::GetInstance()->ServerTerminated() == FALSE)
	{
		SFPacket* pPacket = (SFPacket*)PacketSendSingleton::instance()->PopPacket();

		if (SFPACKET_SERVERSHUTDOWN == pPacket->GetPacketType())
			break;

		pNetworkEngine->SendInternal(pPacket->GetOwnerSerial(), (char*)pPacket->GetHeader(), pPacket->GetPacketSize());
		PacketPoolSingleton::instance()->Release(pPacket);
	}
}