hl2_src-leak-2017/src/public/gcsdk/netpacket.h

49 lines
1.2 KiB
C++

//====== Copyright (c), Valve Corporation, All rights reserved. =======
//
// Purpose: Holds the CNetPacket class
//
//=============================================================================
#ifndef GCNETPACKET_H
#define GCNETPACKET_H
namespace GCSDK
{
//-----------------------------------------------------------------------------
// Purpose: reference-counted received network packet
//-----------------------------------------------------------------------------
class CNetPacket
{
public:
CNetPacket();
~CNetPacket();
//called to allocate a buffer for the net packet of the specified size. This takes an optional pointer
//of which it will copy into the data if appropriate
void Init( uint32 cubData, const void* pCopyData = NULL );
//called when working with a net packet that you want to reference a separate buffer
void InitAdoptBuffer( uint32 cubData, uint8* pubData );
void OrphanBuffer();
// data
uint8 *PubData() const { return m_pubData; }
uint CubData() const { return m_cubData; }
// ownership
void AddRef();
void Release();
private:
int m_cRef; // reference count, deletes self when 0
uint m_cubData;
uint8 *m_pubData;
};
} // namespace GCSDK
#endif // GCNETPACKET_H