Counter Strike : Global Offensive Source Code
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 � 1996-2001, Valve LLC, All rights reserved. ============
//
// Purpose:
//
// $NoKeywords: $
//=============================================================================
#if !defined( MSGBUFFER_H )
#define MSGBUFFER_H
#ifdef _WIN32
#pragma once
#endif
#include "netadr.h"
//-----------------------------------------------------------------------------
// Purpose: Generic byte level message buffer with read/write support
//-----------------------------------------------------------------------------
class CMsgBuffer { public: enum { NET_MAXMESSAGE = 8192 };
// Buffers must be named
CMsgBuffer( const char *buffername = "unnamed", void (*ef)( const char *fmt, ... ) = 0 ); virtual ~CMsgBuffer( void );
// Reset the buffer for writing
void Clear( void ); // Get current # of bytes
int GetCurSize( void ); // Get max # of bytes
int GetMaxSize( void ); // Get pointer to raw data
void *GetData( void ); // Set/unset the allow overflow flag
void SetOverflow( bool allowed ); // Start reading from buffer
void BeginReading( void ); // Get current read byte
int GetReadCount( void );
// Push read count ( to peek at data )
void Push( void ); void Pop( void );
// Writing functions
void WriteByte(int c); void WriteShort(int c); void WriteLong(int c); void WriteFloat(float f); void WriteString(const char *s); void WriteBuf( int iSize, void *buf );
// Reading functions
int ReadByte( void ); int ReadShort( void ); int ReadLong( void ); float ReadFloat( void ); char *ReadString( void ); int ReadBuf( int iSize, void *pbuf );
// setting and storing time received
void SetTime(float time); float GetTime();
// net address received from
void SetNetAddress(netadr_t &adr); netadr_t &GetNetAddress();
private: // Ensures sufficient space to append an object of length
void *GetSpace( int length ); // Copy buffer in at current writing point
void Write( const void *data, int length );
private: // Name of buffer in case of debugging/errors
const char *m_pszBufferName; // Optional error callback
void ( *m_pfnErrorFunc )( const char *fmt, ... );
// Current read pointer
int m_nReadCount; // Push/pop read state
int m_nPushedCount; bool m_bPushed; // Did we hit the end of the read buffer?
bool m_bBadRead; // Max size of buffer
int m_nMaxSize; // Current bytes written
int m_nCurSize; // if false, call m_pfnErrorFunc
bool m_bAllowOverflow; // set to true when buffer hits end
bool m_bOverFlowed; // Internal storage
unsigned char m_rgData[ NET_MAXMESSAGE ]; // time received
float m_fRecvTime; // address received from
netadr_t m_NetAddr; };
#endif // !MSGBUFFER_H
|