//========= 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