Team Fortress 2 Source Code as on 22/4/2020
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
//========= 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
|