summaryrefslogtreecommitdiff
path: root/public/inetchannelinfo.h
diff options
context:
space:
mode:
Diffstat (limited to 'public/inetchannelinfo.h')
-rw-r--r--public/inetchannelinfo.h76
1 files changed, 76 insertions, 0 deletions
diff --git a/public/inetchannelinfo.h b/public/inetchannelinfo.h
new file mode 100644
index 0000000..41fe186
--- /dev/null
+++ b/public/inetchannelinfo.h
@@ -0,0 +1,76 @@
+//========= Copyright Valve Corporation, All rights reserved. ============//
+//
+// Purpose:
+//
+// $Workfile: $
+// $Date: $
+//
+//-----------------------------------------------------------------------------
+// $Log: $
+//
+// $NoKeywords: $
+//=============================================================================//
+#if !defined( INETCHANNELINFO_H )
+#define INETCHANNELINFO_H
+#ifdef _WIN32
+#pragma once
+#endif
+
+
+#define FLOW_OUTGOING 0
+#define FLOW_INCOMING 1
+#define MAX_FLOWS 2 // in & out
+
+class INetChannelInfo
+{
+public:
+
+ enum {
+ GENERIC = 0, // must be first and is default group
+ LOCALPLAYER, // bytes for local player entity update
+ OTHERPLAYERS, // bytes for other players update
+ ENTITIES, // all other entity bytes
+ SOUNDS, // game sounds
+ EVENTS, // event messages
+ USERMESSAGES, // user messages
+ ENTMESSAGES, // entity messages
+ VOICE, // voice data
+ STRINGTABLE, // a stringtable update
+ MOVE, // client move cmds
+ STRINGCMD, // string command
+ SIGNON, // various signondata
+ TOTAL, // must be last and is not a real group
+ };
+
+ virtual const char *GetName( void ) const = 0; // get channel name
+ virtual const char *GetAddress( void ) const = 0; // get channel IP address as string
+ virtual float GetTime( void ) const = 0; // current net time
+ virtual float GetTimeConnected( void ) const = 0; // get connection time in seconds
+ virtual int GetBufferSize( void ) const = 0; // netchannel packet history size
+ virtual int GetDataRate( void ) const = 0; // send data rate in byte/sec
+
+ virtual bool IsLoopback( void ) const = 0; // true if loopback channel
+ virtual bool IsTimingOut( void ) const = 0; // true if timing out
+ virtual bool IsPlayback( void ) const = 0; // true if demo playback
+
+ 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 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 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 GetPacketBytes( int flow, int frame_number, int group ) const = 0; // group size of this packet
+ virtual bool GetStreamProgress( int flow, int *received, int *total ) const = 0; // TCP progress if transmitting
+ 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 ) const = 0;
+
+ virtual float GetTimeoutSeconds() const = 0;
+};
+
+#endif // INETCHANNELINFO_H