diff --git a/public/inetchannel.h b/public/inetchannel.h index 36096fb5..2ea380a5 100644 --- a/public/inetchannel.h +++ b/public/inetchannel.h @@ -12,27 +12,25 @@ #include "tier0/platform.h" #include "inetchannelinfo.h" +#include "steam/steamnetworkingtypes.h" #include "tier1/bitbuf.h" #include "tier1/netadr.h" #include "tier1/utldelegate.h" #include class IDemoRecorderBase; -class IInstantReplayIntercept; class IInstantReplayIntercept; class INetMessage; class INetChannelHandler; +class INetChannel; class INetChannelInfo; class INetMessageBinder; class INetworkMessageProcessingPreFilter; +class INetworkSerializable; class INetMessageDispatcher; class InstantReplayMessage_t; class CUtlSlot; -DECLARE_HANDLE_32BIT(CSplitScreenPlayerSlot); -DECLARE_POINTER_HANDLE(NetMessageHandle_t); - - #ifndef NET_PACKET_ST_DEFINED #define NET_PACKET_ST_DEFINED struct NetPacket_t @@ -57,82 +55,93 @@ enum NetChannelBufType_t : int8 BUF_VOICE, }; +abstract_class INetworkMessageProcessingPreFilter +{ +public: + virtual bool FilterMessage( INetworkSerializable *pNetMessage, const void *pData, INetChannel *pChannel ) = 0; +}; + abstract_class INetChannel : public INetChannelInfo { public: virtual ~INetChannel( void ) {}; - virtual size_t GetTotalPacketBytes( int, int ) const = 0; - virtual size_t GetTotalPacketReliableBytes( int, int ) const = 0; - virtual void SetTimeout(float seconds, bool bForceExact = false) = 0; - virtual void Reset( void ) = 0; virtual void Clear( void ) = 0; - virtual void Shutdown(/* ENetworkDisconnectionReason */ int reason) = 0; - + virtual void Shutdown( ENetworkDisconnectionReason reason ) = 0; + + virtual HSteamNetConnection GetSteamNetConnection( void ) const = 0; + + virtual bool SendNetMessage( INetworkSerializable *pNetMessage, const void *pData, NetChannelBufType_t bufType ) = 0; virtual bool SendData( bf_write &msg, NetChannelBufType_t bufferType ) = 0; - virtual void SetChoked( void ) = 0; - virtual bool Transmit( const char *, bf_write * ) = 0; + virtual int Transmit( const char *pDebugName, bf_write *data ) = 0; + virtual void SetBitsToSend( void ) = 0; + virtual int SendMessages( const char *pDebugName, bf_write *data ) = 0; + virtual void ClearBitsToSend( void ) = 0; - virtual const netadr_t &GetRemoteAddress( void ) const = 0; - virtual int GetDropNumber( void ) const = 0; + virtual const netadr_t &GetRemoteAddress( void ) const = 0; virtual void UpdateMessageStats( int msggroup, int bits, bool ) = 0; + + virtual void unk001( void ) = 0; + virtual bool CanPacket( void ) const = 0; virtual bool IsOverflowed( void ) const = 0; virtual bool HasPendingReliableData( void ) = 0; - virtual void SetMaxBufferSize( NetChannelBufType_t bufferType, int nBytes ) = 0; - // For routing messages to a different handler virtual bool SetActiveChannel( INetChannel *pNewChannel ) = 0; - virtual void AttachSplitPlayer( CSplitScreenPlayerSlot nSplitPlayerSlot, INetChannel *pChannel ) = 0; - virtual void DetachSplitPlayer( CSplitScreenPlayerSlot nSplitPlayerSlot ) = 0; + + virtual void AttachSplitPlayer( CSplitScreenSlot nSlot, INetChannel *pChannel ) = 0; + virtual void DetachSplitPlayer( CSplitScreenSlot nSlot ) = 0; - virtual void SetUsesMaxRoutablePlayload(bool useMax) = 0; - virtual void SetDataRate(float rate) = 0; - virtual void SetUpdateRate( int rate ) = 0; - virtual void SetCommandRate( int rate ) = 0; + virtual void SetMinDataRate( int rate ) = 0; + virtual void SetMaxDataRate( int rate ) = 0; - virtual bool IsTimedOut( void ) const = 0; + virtual void SetTimeout( float seconds, bool bForceExact = false ) = 0; + virtual bool IsTimedOut( void ) const = 0; + virtual void UpdateLastReceivedTime( void ) = 0; - virtual void SetRemoteFramerate( float flFrameTime, float flFrameTimeStdDeviation, float flFrameStartTimeStdDeviation ) = 0; - virtual bool IsRemoteDisconnected() const = 0; + virtual void SetRemoteFramerate( float flFrameTime, float flFrameTimeStdDeviation, float flFrameStartTimeStdDeviation, float flLoss, float flUnfilteredFrameTime ) = 0; + virtual bool IsRemoteDisconnected( ENetworkDisconnectionReason &reason ) const = 0; virtual void SetNetMessageDispatcher( INetMessageDispatcher *pDispatcher ) = 0; virtual INetMessageDispatcher *GetNetMessageDispatcher( void ) const = 0; - virtual void SendNetMessage( NetMessageHandle_t msg, const void *pData, NetChannelBufType_t bufType ) = 0; + virtual void StartRegisteringMessageHandlers( void ) = 0; virtual void FinishRegisteringMessageHandlers( void ) = 0; - virtual void RegisterNetMessageHandlerAbstract( CUtlSlot *, const CUtlAbstractDelegate &, int, NetMessageHandle_t , int ) = 0; - virtual void UnregisterNetMessageHandlerAbstract( CUtlSlot *, const CUtlAbstractDelegate &, NetMessageHandle_t ) = 0; + + virtual void RegisterNetMessageHandlerAbstract( CUtlSlot *nSlot, const CUtlAbstractDelegate &delegate, int nParamCount, INetworkSerializable *pNetMessage, int nPriority ) = 0; + virtual void UnregisterNetMessageHandlerAbstract( CUtlSlot *nSlot, const CUtlAbstractDelegate &delegate, INetworkSerializable *pNetMessage ) = 0; + virtual void SetChallengeNr( unsigned int challenge ) = 0; - virtual void GetSequenceData( int &nOutSequenceNr, int &nInSequenceNr, int &nOutSequenceNrAck ) = 0; - virtual void SetSequenceData( int nOutSequenceNr, int nInSequenceNr, int nOutSequenceNrAck ) = 0; - virtual int GetNumBitsWritten(NetChannelBufType_t bufferType) const = 0; - virtual void SetCompressionMode( bool ) = 0; - // Max # of payload bytes before we must split/fragment the packet - virtual void SetMaxRoutablePayloadSize( int nSplitSize ) = 0; - virtual int GetMaxRoutablePayloadSize() = 0; - virtual void ProcessPacket( bf_read &packet, bool bHasHeader ) = 0; - virtual void SetDemoRecorder( IDemoRecorderBase * ) = 0; - virtual void SetInstantReplayIntercept( IInstantReplayIntercept * ) = 0; - virtual void SetInterpolationAmount( float flInterpolationAmount ) = 0; - virtual void SetFileTransmissionMode( bool ) = 0; - virtual bool IsNull() const = 0; - virtual bool ProcessDemoPacket( NetPacket_t* packet ) = 0; - virtual bool WasLastMessageReliable() const = 0; - virtual void InstallMessageFilter( INetworkMessageProcessingPreFilter * ) = 0; - virtual void UninstallMessageFilter( INetworkMessageProcessingPreFilter * ) = 0; - virtual void PostReceivedNetMessage(NetMessageHandle_t, const void *, const NetChannelBufType_t* ) = 0; - virtual bool InsertReplayMessage( InstantReplayMessage_t &msg ) = 0; - virtual bool HasQueuedPackets( void ) const = 0; + virtual int GetNumBitsWritten( NetChannelBufType_t bufferType ) const = 0; + virtual void SetDemoRecorder( IDemoRecorderBase *pDemoRecorder ) = 0; + virtual void SetInstantReplayIntercept( IInstantReplayIntercept *pInstantReplayIntercept ) = 0; + virtual bool IsNull( void ) const = 0; + virtual bool ProcessDemoPacket( NetPacket_t *packet ) = 0; + virtual bool WasLastMessageReliable( void ) const = 0; + + virtual void InstallMessageFilter( INetworkMessageProcessingPreFilter *pFilter ) = 0; + virtual void UninstallMessageFilter( INetworkMessageProcessingPreFilter *pFilter ) = 0; + + virtual void PostReceivedNetMessage( INetworkSerializable *pNetMessage, const void *pData, const NetChannelBufType_t *pBufType, int nBits, int nInSequenceNr ) = 0; + virtual void InsertReplayMessage( InstantReplayMessage_t &msg ) = 0; + virtual bool HasQueuedPackets( int nMessageId ) const = 0; virtual void SetPendingDisconnect( ENetworkDisconnectionReason reason ) = 0; - virtual int GetPendingDisconnect() const = 0; + virtual ENetworkDisconnectionReason GetPendingDisconnect( void ) const = 0; - virtual bool IsSuppressingTransmit() const = 0; - virtual void SuppressTransmit( bool ) = 0; + virtual void SuppressTransmit( bool suppress ) = 0; + virtual bool IsSuppressingTransmit( void ) const = 0; + + virtual EResult SendMessage( const void *pData, uint32 cbData, int nSendFlags ) = 0; + + virtual int GetCurrentMessageBits( void ) const = 0; + virtual int GetCurrentMessageInSequenceNr( void ) const = 0; + + virtual void unk101( void ) = 0; + virtual void unk102( void ) = 0; }; diff --git a/public/inetchannelinfo.h b/public/inetchannelinfo.h index 30722f01..c0d746ff 100644 --- a/public/inetchannelinfo.h +++ b/public/inetchannelinfo.h @@ -22,6 +22,7 @@ #define MAX_FLOWS 2 // in & out struct SNetChannelLatencyStats; +struct NetChanStat_t; class INetChannelInfo { @@ -57,29 +58,29 @@ public: virtual bool IsTimingOut( void ) const = 0; // true if timing out virtual bool IsPlayback( void ) const = 0; - virtual float GetLatency( int flow ) const = 0; // current latency (RTT), more accurate but jittering - virtual float GetAvgLatency( int flow ) const = 0; // average packet latency in seconds - virtual float GetStdDevLatency(int flow) const = 0; // standard deviation of latency + virtual float GetAvgLatency( void ) const = 0; // average packet latency in seconds + virtual float GetEngineLatency( void ) const = 0; // current latency (RTT), more accurate but jittering + virtual void GetLatencyBreakdown( NetChanStat_t* pPeer, NetChanStat_t* pNet, NetChanStat_t* pLocal, NetChanStat_t* pEngine ) const = 0; + virtual float GetAvgLoss( int flow ) const = 0; // avg packet loss[0..1] - virtual float GetAvgChoke( int flow ) const = 0; // avg packet choke[0..1] virtual float GetAvgData( int flow ) const = 0; // data flow in bytes/sec virtual float GetAvgPackets( int flow ) const = 0; // avg packets/sec virtual int GetTotalData( int flow ) const = 0; // total flow in/out in bytes virtual int GetTotalPackets( int flow ) const = 0; virtual int GetSequenceNr( int flow ) const = 0; // last send seq number - virtual bool IsValidPacket( int flow, int frame_number ) const = 0; // true if packet was not lost/dropped/chocked/flushed - virtual float GetPacketTime( int flow, int frame_number ) const = 0; // time when packet was send - virtual int GetPacketBits( int flow, int frame_number, int group ) const = 0; // group size of this packet virtual float GetTimeSinceLastReceived( void ) const = 0; // get time since last recieved packet in seconds - virtual float GetCommandInterpolationAmount( int flow, int frame_number ) const = 0; - virtual void GetPacketResponseLatency( int flow, int frame_number, int *pnLatencyMsecs, int *pnChoke ) const = 0; - virtual void GetRemoteFramerate( float *pflFrameTime, float *pflFrameTimeStdDeviation, float *pflFrameStartTimeStdDeviation ) const = 0; + virtual void GetRemoteFramerate( float *pflFrameTime, float *pflFrameTimeStdDeviation, float *pflFrameStartTimeStdDeviation, float *pflUnfilteredFrameTime ) const = 0; - virtual float GetTimeoutSeconds() const = 0; + virtual float GetTimeoutSeconds( void ) const = 0; + virtual float GetTimeUntilTimeout( void ) const = 0; virtual void ResetLatencyStats( int channel ) = 0; virtual SNetChannelLatencyStats *GetLatencyStats( int channel ) const = 0; virtual void SetLatencyStats( int channel, const SNetChannelLatencyStats &stats ) = 0; + + virtual void SetInterpolationAmount( float flInterpolationAmount, float flUpdateRate ) = 0; + virtual void SetNumPredictionErrors( int num ) = 0; + virtual void SetShowNetMessages( bool show ) = 0; }; #endif // INETCHANNELINFO_H