mirror of
https://github.com/celisej567/source-engine.git
synced 2026-01-05 22:09:59 +03:00
1
This commit is contained in:
106
engine/dt_instrumentation_server.h
Normal file
106
engine/dt_instrumentation_server.h
Normal file
@@ -0,0 +1,106 @@
|
||||
//========= Copyright Valve Corporation, All rights reserved. ============//
|
||||
//
|
||||
// Purpose:
|
||||
//
|
||||
// $NoKeywords: $
|
||||
//=============================================================================//
|
||||
|
||||
#ifndef DATATABLE_INSTRUMENTATION_SERVER_H
|
||||
#define DATATABLE_INSTRUMENTATION_SERVER_H
|
||||
#ifdef _WIN32
|
||||
#pragma once
|
||||
#endif
|
||||
|
||||
#include "tier0/fasttimer.h"
|
||||
#include "iservernetworkable.h"
|
||||
|
||||
|
||||
class CDTISendTable;
|
||||
class SendTable;
|
||||
|
||||
|
||||
// Is instrumentation enabled?
|
||||
extern bool g_bServerDTIEnabled;
|
||||
|
||||
|
||||
// Types of things it times.
|
||||
typedef enum
|
||||
{
|
||||
SERVERDTI_CALCDELTA=0,
|
||||
SERVERDTI_ENCODE,
|
||||
SERVERDTI_SHOULDTRANSMIT,
|
||||
SERVERDTI_WRITE_DELTA_PROPS
|
||||
} ServerDTITimerType;
|
||||
|
||||
|
||||
|
||||
// ------------------------------------------------------------------------------------------ //
|
||||
// Instrumentation functions.
|
||||
// ------------------------------------------------------------------------------------------ //
|
||||
|
||||
// This is called at startup to enable or disable instrumentation.
|
||||
// If pFilename is null, no instrumentation is performed.
|
||||
void ServerDTI_Init( char const *pFilename );
|
||||
|
||||
// This calls ServerDTI_Flush and cleans up.
|
||||
void ServerDTI_Term();
|
||||
|
||||
// This writes out the instrumentation file.
|
||||
void ServerDTI_Flush();
|
||||
|
||||
// Setup instrumentation on a CRecvDecoder.
|
||||
CDTISendTable* ServerDTI_HookTable( SendTable *pTable );
|
||||
|
||||
void ServerDTI_AddEntityEncodeEvent( SendTable *pTable, float distToPlayer );
|
||||
|
||||
// Used to tell if the entity is using manual or auto mode.
|
||||
void ServerDTI_RegisterNetworkStateChange( SendTable *pTable, bool bStateChanged );
|
||||
|
||||
|
||||
// ------------------------------------------------------------------------------------------ //
|
||||
// Helper class to place timers easily.
|
||||
// ------------------------------------------------------------------------------------------ //
|
||||
|
||||
class CServerDTITimer
|
||||
{
|
||||
public:
|
||||
CServerDTITimer( const SendTable *pTable, ServerDTITimerType type );
|
||||
~CServerDTITimer();
|
||||
|
||||
private:
|
||||
|
||||
const SendTable *m_pTable;
|
||||
ServerDTITimerType m_Type;
|
||||
CFastTimer m_Timer;
|
||||
};
|
||||
|
||||
inline CServerDTITimer::CServerDTITimer( const SendTable *pTable, ServerDTITimerType type )
|
||||
{
|
||||
if ( g_bServerDTIEnabled )
|
||||
{
|
||||
m_pTable = pTable;
|
||||
m_Type = type;
|
||||
m_Timer.Start();
|
||||
}
|
||||
}
|
||||
|
||||
inline CServerDTITimer::~CServerDTITimer()
|
||||
{
|
||||
if ( g_bServerDTIEnabled && m_pTable )
|
||||
{
|
||||
m_Timer.End();
|
||||
extern void _ServerDTI_HookTimer( const SendTable *pTable, ServerDTITimerType timerType, CCycleCount const &count );
|
||||
_ServerDTI_HookTimer( m_pTable, m_Type, m_Timer.GetDuration() );
|
||||
}
|
||||
}
|
||||
|
||||
inline void ServerDTI_RegisterNetworkStateChange( SendTable *pTable, bool bStateChanged )
|
||||
{
|
||||
if ( g_bServerDTIEnabled )
|
||||
{
|
||||
extern void _ServerDTI_RegisterNetworkStateChange( SendTable *pTable, bool bStateChanged );
|
||||
_ServerDTI_RegisterNetworkStateChange( pTable, bStateChanged );
|
||||
}
|
||||
}
|
||||
|
||||
#endif // DATATABLE_INSTRUMENTATION_SERVER_H
|
||||
Reference in New Issue
Block a user