#ifndef INETMESSAGE_H #define INETMESSAGE_H #include "bitbuf.h" class INetMsgHandler; class INetMessage; class INetChannel; class INetMessage { public: virtual ~INetMessage() {}; virtual void SetNetChannel(INetChannel* netchan) { DebuggerBreak(); return; } virtual void SetReliable(bool state) = 0; virtual bool Process(void) { DebuggerBreak(); return false; } virtual bool ReadFromBuffer(bf_read& buffer) = 0; virtual bool WriteToBuffer(bf_write& buffer) const = 0; virtual bool IsReliable(void) const = 0; virtual int GetType(void) const = 0; virtual int GetGroup(void) const = 0; virtual const char* GetName(void) const = 0; virtual INetChannel* GetNetChannel(void) const { DebuggerBreak(); return NULL; } virtual const char* ToString(void) const = 0; virtual size_t GetSize() const = 0; }; class INetMessageBinder { public: virtual ~INetMessageBinder() {}; virtual int GetType(void) const = 0; virtual void SetNetChannel(INetChannel* netchan) = 0; virtual INetMessage* CreateFromBuffer(bf_read& buffer) = 0; virtual bool Process(const INetMessage& src) = 0; }; class INetChannelHandler { public: virtual ~INetChannelHandler(void) {}; virtual void ConnectionStart(INetChannel* chan) = 0; virtual void ConnectionStop() = 0; virtual void ConnectionClosing(const char* reason) = 0; virtual void ConnectionCrashed(const char* reason) = 0; virtual void PacketStart(int incoming_sequence, int outgoing_acknowledged) = 0; virtual void PacketEnd(void) = 0; virtual void FileRequested(const char* fileName, unsigned int transferID, bool isReplayDemoFile) = 0; virtual void FileReceived(const char* fileName, unsigned int transferID, bool isReplayDemoFile) = 0; virtual void FileDenied(const char* fileName, unsigned int transferID, bool isReplayDemoFile) = 0; virtual void FileSent(const char* fileName, unsigned int transferID, bool isReplayDemoFile) = 0; virtual bool ChangeSplitscreenUser(int nSplitScreenUserSlot) = 0; }; #endif