diff options
Diffstat (limited to 'public/inetmsghandler.h')
| -rw-r--r-- | public/inetmsghandler.h | 218 |
1 files changed, 218 insertions, 0 deletions
diff --git a/public/inetmsghandler.h b/public/inetmsghandler.h new file mode 100644 index 0000000..79c299a --- /dev/null +++ b/public/inetmsghandler.h @@ -0,0 +1,218 @@ +//========= Copyright Valve Corporation, All rights reserved. ============// +// +// Purpose: +// +// $Workfile: $ +// $Date: $ +// +//----------------------------------------------------------------------------- +// $Log: $ +// +// $NoKeywords: $ +//=============================================================================// +#if !defined( INETMSGHANDLER_H ) +#define INETMSGHANDLER_H +#ifdef _WIN32 +#pragma once +#endif + +class INetChannel; +typedef struct netpacket_s netpacket_t; + +class INetChannelHandler +{ +public: + virtual ~INetChannelHandler( void ) {}; + + virtual void ConnectionStart(INetChannel *chan) = 0; // called first time network channel is established + + virtual void ConnectionClosing(const char *reason) = 0; // network channel is being closed by remote site + + virtual void ConnectionCrashed(const char *reason) = 0; // network error occured + + virtual void PacketStart(int incoming_sequence, int outgoing_acknowledged) = 0; // called each time a new packet arrived + + virtual void PacketEnd( void ) = 0; // all messages has been parsed + + virtual void FileRequested(const char *fileName, unsigned int transferID ) = 0; // other side request a file for download + + virtual void FileReceived(const char *fileName, unsigned int transferID ) = 0; // we received a file + + virtual void FileDenied(const char *fileName, unsigned int transferID ) = 0; // a file request was denied by other side + + virtual void FileSent(const char *fileName, unsigned int transferID ) = 0; // we sent a file +}; + +#define PROCESS_NET_MESSAGE( name ) \ + virtual bool Process##name( NET_##name *msg ) + +#define PROCESS_SVC_MESSAGE( name ) \ + virtual bool Process##name( SVC_##name *msg ) + +#define PROCESS_CLC_MESSAGE( name ) \ + virtual bool Process##name( CLC_##name *msg ) + +#define PROCESS_MM_MESSAGE( name ) \ + virtual bool Process##name( MM_##name *msg ) + + +#define REGISTER_NET_MSG( name ) \ + NET_##name * p##name = new NET_##name(); \ + p##name->m_pMessageHandler = this; \ + chan->RegisterMessage( p##name ); \ + +#define REGISTER_SVC_MSG( name ) \ + SVC_##name * p##name = new SVC_##name(); \ + p##name->m_pMessageHandler = this; \ + chan->RegisterMessage( p##name ); \ + +#define REGISTER_CLC_MSG( name ) \ + CLC_##name * p##name = new CLC_##name(); \ + p##name->m_pMessageHandler = this; \ + chan->RegisterMessage( p##name ); \ + +#define REGISTER_MM_MSG( name ) \ + MM_##name * p##name = new MM_##name(); \ + p##name->m_pMessageHandler = this; \ + chan->RegisterMessage( p##name ); \ + +class NET_Tick; +class NET_StringCmd; +class NET_SetConVar; +class NET_SignonState; + + +class INetMessageHandler +{ +public: + virtual ~INetMessageHandler( void ) {}; + + PROCESS_NET_MESSAGE( Tick ) = 0; + PROCESS_NET_MESSAGE( StringCmd ) = 0; + PROCESS_NET_MESSAGE( SetConVar ) = 0; + PROCESS_NET_MESSAGE( SignonState ) = 0; +}; + +class CLC_ClientInfo; +class CLC_Move; +class CLC_VoiceData; +class CLC_BaselineAck; +class CLC_ListenEvents; +class CLC_RespondCvarValue; +class CLC_FileCRCCheck; +class CLC_FileMD5Check; +class CLC_SaveReplay; +class CLC_CmdKeyValues; + +class IClientMessageHandler : public INetMessageHandler +{ +public: + virtual ~IClientMessageHandler( void ) {}; + + PROCESS_CLC_MESSAGE( ClientInfo ) = 0; + PROCESS_CLC_MESSAGE( Move ) = 0; + PROCESS_CLC_MESSAGE( VoiceData ) = 0; + PROCESS_CLC_MESSAGE( BaselineAck ) = 0; + PROCESS_CLC_MESSAGE( ListenEvents ) = 0; + PROCESS_CLC_MESSAGE( RespondCvarValue ) = 0; + PROCESS_CLC_MESSAGE( FileCRCCheck ) = 0; + PROCESS_CLC_MESSAGE( FileMD5Check ) = 0; +#if defined( REPLAY_ENABLED ) + PROCESS_CLC_MESSAGE( SaveReplay ) = 0; +#endif + PROCESS_CLC_MESSAGE( CmdKeyValues ) = 0; +}; + +class SVC_Print; +class SVC_ServerInfo; +class SVC_SendTable; +class SVC_ClassInfo; +class SVC_SetPause; +class SVC_CreateStringTable; +class SVC_UpdateStringTable; +class SVC_VoiceInit; +class SVC_VoiceData; +class SVC_Sounds; +class SVC_SetView; +class SVC_FixAngle; +class SVC_CrosshairAngle; +class SVC_BSPDecal; +class SVC_GameEvent; +class SVC_UserMessage; +class SVC_EntityMessage; +class SVC_PacketEntities; +class SVC_TempEntities; +class SVC_Prefetch; +class SVC_Menu; +class SVC_GameEventList; +class SVC_GetCvarValue; +class SVC_CmdKeyValues; +class SVC_SetPauseTimed; + +class IServerMessageHandler : public INetMessageHandler +{ +public: + virtual ~IServerMessageHandler( void ) {}; + + // Returns dem file protocol version, or, if not playing a demo, just returns PROTOCOL_VERSION + virtual int GetDemoProtocolVersion() const = 0; + + PROCESS_SVC_MESSAGE( Print ) = 0; + PROCESS_SVC_MESSAGE( ServerInfo ) = 0; + PROCESS_SVC_MESSAGE( SendTable ) = 0; + PROCESS_SVC_MESSAGE( ClassInfo ) = 0; + PROCESS_SVC_MESSAGE( SetPause ) = 0; + PROCESS_SVC_MESSAGE( CreateStringTable ) = 0; + PROCESS_SVC_MESSAGE( UpdateStringTable ) = 0; + PROCESS_SVC_MESSAGE( VoiceInit ) = 0; + PROCESS_SVC_MESSAGE( VoiceData ) = 0; + PROCESS_SVC_MESSAGE( Sounds ) = 0; + PROCESS_SVC_MESSAGE( SetView ) = 0; + PROCESS_SVC_MESSAGE( FixAngle ) = 0; + PROCESS_SVC_MESSAGE( CrosshairAngle ) = 0; + PROCESS_SVC_MESSAGE( BSPDecal ) = 0; + PROCESS_SVC_MESSAGE( GameEvent ) = 0; + PROCESS_SVC_MESSAGE( UserMessage ) = 0; + PROCESS_SVC_MESSAGE( EntityMessage ) = 0; + PROCESS_SVC_MESSAGE( PacketEntities ) = 0; + PROCESS_SVC_MESSAGE( TempEntities ) = 0; + PROCESS_SVC_MESSAGE( Prefetch ) = 0; + PROCESS_SVC_MESSAGE( Menu ) = 0; + PROCESS_SVC_MESSAGE( GameEventList ) = 0; + PROCESS_SVC_MESSAGE( GetCvarValue ) = 0; + PROCESS_SVC_MESSAGE( CmdKeyValues ) = 0; + PROCESS_SVC_MESSAGE( SetPauseTimed ) = 0; +}; + +class MM_Heartbeat; +class MM_ClientInfo; +class MM_JoinResponse; +class MM_RegisterResponse; +class MM_Migrate; +class MM_Mutelist; +class MM_Checkpoint; + +class IMatchmakingMessageHandler : public INetMessageHandler +{ +public: + virtual ~IMatchmakingMessageHandler( void ) {}; + + PROCESS_MM_MESSAGE( Heartbeat ) = 0; + PROCESS_MM_MESSAGE( ClientInfo ) = 0; + PROCESS_MM_MESSAGE( JoinResponse ) = 0; + PROCESS_MM_MESSAGE( RegisterResponse ) = 0; + PROCESS_MM_MESSAGE( Migrate ) = 0; + PROCESS_MM_MESSAGE( Mutelist ) = 0; + PROCESS_MM_MESSAGE( Checkpoint) = 0; +}; + +class IConnectionlessPacketHandler +{ +public: + virtual ~IConnectionlessPacketHandler( void ) {}; + + virtual bool ProcessConnectionlessPacket( netpacket_t *packet ) = 0; // process a connectionless packet +}; + + +#endif // INETMSGHANDLER_H |