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; }
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); } }