222 lines
6.3 KiB
C++
222 lines
6.3 KiB
C++
//========= 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
|