Team Fortress 2 Source Code as on 22/4/2020
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
//====== Copyright (c), Valve Corporation, All rights reserved. =======
//
// Purpose: Holds the CNetPacket class
//
//=============================================================================
#include "stdafx.h"
// memdbgon must be the last include file in a .cpp file!!!
#include "tier0/memdbgon.h"
namespace GCSDK {
//-----------------------------------------------------------------------------
// Purpose: Constructor
//-----------------------------------------------------------------------------
CNetPacket::CNetPacket() { m_cRef = 0; m_pubData = NULL; m_cubData = 0; }
//-----------------------------------------------------------------------------
// Purpose: Destructor, validates refcount
//-----------------------------------------------------------------------------
CNetPacket::~CNetPacket() { Assert( m_cRef == 0 ); }
//-----------------------------------------------------------------------------
// Purpose: Inits all members
// Input : hConnection - connection we're from
// pubData - message data
// cubData - message size
// *pubNetworkBuffer - network buffer that contains the message
// assumes control of this memory
//-----------------------------------------------------------------------------
void CNetPacket::Init( uint32 cubData, const void* pCopyData ) { Assert( cubData );
m_pubData = (uint8 *)g_MemPoolMsg.Alloc( cubData ); m_cubData = cubData; if( pCopyData ) { Q_memcpy( m_pubData, pCopyData, cubData ); }
AddRef(); }
//-----------------------------------------------------------------------------
// Purpose: adds to refcount
//-----------------------------------------------------------------------------
void CNetPacket::AddRef() { ++m_cRef; }
//-----------------------------------------------------------------------------
void CNetPacket::InitAdoptBuffer( uint32 cubData, uint8* pubData ) { Assert( !m_pubData ); m_pubData = pubData; m_cubData = cubData;
AddRef(); }
//-----------------------------------------------------------------------------
void CNetPacket::OrphanBuffer() { m_pubData = NULL; m_cubData = 0; }
//-----------------------------------------------------------------------------
// Purpose: decrements refcount
//-----------------------------------------------------------------------------
void CNetPacket::Release() { Assert( m_cRef > 0 ); if ( --m_cRef == 0 ) { // delete the network buffer we're associated with, if we have one
if ( m_pubData ) { g_MemPoolMsg.Free( m_pubData ); } // delete ourselves
g_cNetPacket--; CNetPacketPool::sm_MemPoolNetPacket.Free( this ); } }
} // namespace GCSDK
|