#ifndef INETCHANNEL_H #define INETCHANNEL_H #ifdef _WIN32 #pragma once #endif #include "platform.h" #include "inetchannelinfo.h" #include "bitbuf.h" class IDemoRecorder; class INetMessage; class INetChannelHandler; class INetChannelInfo; typedef struct netpacket_s netpacket_t; typedef struct netadr_s netadr_t; abstract_class INetChannel : public INetChannelInfo { public: virtual ~INetChannel(void) {}; virtual void SetDataRate(float rate) = 0; virtual bool RegisterMessage(INetMessage* msg) = 0; virtual bool UnregisterMessage(INetMessageBinder* msg) = 0; virtual bool StartStreaming(unsigned int challengeNr) = 0; virtual void ResetStreaming(void) = 0; virtual void SetTimeout(float seconds) = 0; virtual void SetDemoRecorder(IDemoRecorder* recorder) = 0; virtual void SetChallengeNr(unsigned int chnr) = 0; virtual void Reset(void) = 0; virtual void Clear(void) = 0; virtual void Shutdown(const char* reason) = 0; virtual void ProcessPlayback(void) = 0; virtual bool ProcessStream(void) = 0; virtual void ProcessPacket(struct netpacket_s* packet, bool bHasHeader) = 0; virtual bool SendNetMsg(INetMessage& msg, bool bForceReliable = false, bool bVoice = false) = 0; #ifdef POSIX FORCEINLINE bool SendNetMsg(INetMessage const& msg, bool bForceReliable = false, bool bVoice = false) { return SendNetMsg(*((INetMessage*)&msg), bForceReliable, bVoice); } #endif virtual bool SendData(bf_write& msg, bool bReliable = true) = 0; virtual bool SendFile(const char* filename, unsigned int transferID) = 0; virtual void DenyFile(const char* filename, unsigned int transferID) = 0; virtual void RequestFile_OLD(const char* filename, unsigned int transferID) = 0; virtual void SetChoked(void) = 0; virtual int SendDatagram(bf_write* data) = 0; virtual bool Transmit(bool onlyReliable = false) = 0; virtual const netadr_t& GetRemoteAddress(void) const = 0; virtual INetChannelHandler* GetMsgHandler(void) const = 0; virtual int GetDropNumber(void) const = 0; virtual int GetSocket(void) const = 0; virtual unsigned int GetChallengeNr(void) const = 0; virtual void GetSequenceData(int& nOutSequenceNr, int& nInSequenceNr, int& nOutSequenceNrAck) = 0; virtual void SetSequenceData(int nOutSequenceNr, int nInSequenceNr, int nOutSequenceNrAck) = 0; virtual void UpdateMessageStats(int msggroup, int bits) = 0; virtual bool CanPacket(void) const = 0; virtual bool IsOverflowed(void) const = 0; virtual bool IsTimedOut(void) const = 0; virtual bool HasPendingReliableData(void) = 0; virtual void SetFileTransmissionMode(bool bBackgroundMode) = 0; virtual void SetCompressionMode(bool bUseCompression) = 0; virtual unsigned int RequestFile(const char* filename) = 0; virtual float GetTimeSinceLastReceived(void) const = 0; virtual void SetMaxBufferSize(bool bReliable, int nBytes, bool bVoice = false) = 0; virtual bool IsNull() const = 0; virtual int GetNumBitsWritten(bool bReliable) = 0; virtual void SetInterpolationAmount(float flInterpolationAmount) = 0; virtual void SetRemoteFramerate(float flFrameTime, float flFrameTimeStdDeviation) = 0; virtual void SetMaxRoutablePayloadSize(int nSplitSize) = 0; virtual int GetMaxRoutablePayloadSize() = 0; virtual int GetProtocolVersion() = 0; }; #endif