Ejemplo n.º 1
0
ServerPacket*
BasicPacketFlow::HXPacketToServerPacket(IHXPacket* pPacket)
{
    ServerPacket* pServerPacket;

    // This is a travesty of justice, but it's REALLY fast
    if (pPacket->QueryInterface(IID_ServerPacket,(void **)0xffffd00d) == HXR_OK)
    {
	pServerPacket = (ServerPacket *)pPacket;
    }
    else
    {
	IHXRTPPacket *pRTPPacket;

	PANIC(("Old-Style IHXPacket Wrapping Used\n"));
	if (pPacket->QueryInterface(IID_IHXRTPPacket, 
				    (void**) &pRTPPacket) == HXR_OK)
	{
	    pServerPacket = new ServerRTPPacket();
	    pRTPPacket->Release();
	}
	else
	{
	    pServerPacket = new (m_pProc->pc->mem_cache) ServerPacket();
	}

	pServerPacket->SetPacket(pPacket);
    }

    // set the TSD flag
    UINT16 unRule = pPacket->GetASMRuleNumber();
    PacketStream* pStream = &m_pStreams[pPacket->GetStreamNumber()];
    BOOL bIsTSD = pStream->m_pRules[unRule].m_bTimeStampDelivery;
    pServerPacket->SetTSD(bIsTSD);
    
    return pServerPacket;
}