aboutsummaryrefslogtreecommitdiff
path: root/mp/src/public/inetmsghandler.h
diff options
context:
space:
mode:
Diffstat (limited to 'mp/src/public/inetmsghandler.h')
-rw-r--r--mp/src/public/inetmsghandler.h216
1 files changed, 216 insertions, 0 deletions
diff --git a/mp/src/public/inetmsghandler.h b/mp/src/public/inetmsghandler.h
new file mode 100644
index 00000000..c1db1f33
--- /dev/null
+++ b/mp/src/public/inetmsghandler.h
@@ -0,0 +1,216 @@
+//========= 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 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;
+};
+
+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