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. ============//
//
//=======================================================================================//
#ifndef SV_REPLAYCONTEXT_H
#define SV_REPLAYCONTEXT_H
#ifdef _WIN32
#pragma once
#endif
//----------------------------------------------------------------------------------------
#include "shared_replaycontext.h"
#include "replay/iserverreplaycontext.h"
#include "sv_recordingsessionmanager.h"
#include "sv_recordingsessionblockmanager.h"
#include "errorsystem.h"
//----------------------------------------------------------------------------------------
class CSessionRecorder; class CBaseRecordingSessionBlock; class IRecordingSessionManager; class IThreadPool; class CFileserverCleaner;
//----------------------------------------------------------------------------------------
class CServerReplayContext : public IServerReplayContext, public IErrorReporter { public: LINK_TO_SHARED_REPLAYCONTEXT_IMP();
CServerReplayContext(); ~CServerReplayContext();
virtual bool Init( CreateInterfaceFn fnFactory ); virtual void Shutdown();
virtual void Think(); // Called by engine
virtual void OnPublishFailed(); void DoSanityCheckNow();
void UpdateFileserverIPFromHostname( const char *pHostname ); void UpdateFileserverProxyIPFromHostname( const char *pHostname );
//
// IErrorReporter
//
virtual void ReportErrorsToUser( wchar_t *pErrorText );
//
// IServerReplayContext
//
virtual void FlagForConVarSanityCheck(); virtual IGameEvent *CreateReplaySessionInfoEvent(); virtual IReplaySessionRecorder *GetSessionRecorder(); virtual const char *GetLocalFileServerPath() const; virtual void CreateSessionOnClient( int nClientSlot );
const char *GetServerSubDirName() const;
CSessionRecorder *m_pSessionRecorder; CFileserverCleaner *m_pFileserverCleaner;
char m_szFileserverIP[16]; // Fileserver's IP, cached any time "replay_fileserver_offload_hostname" is modified.
char m_szFileserverProxyIP[16]; // Proxy's IP, cached any time "replay_fileserver_offload_proxy_host" is modified.
private: void CleanTmpDir(); void ConVarSanityThink();
float m_flConVarSanityCheckTime; bool m_bShouldAbortRecording; };
//----------------------------------------------------------------------------------------
extern CServerReplayContext *g_pServerReplayContext;
//----------------------------------------------------------------------------------------
inline CServerRecordingSessionManager *SV_GetRecordingSessionManager() { return static_cast< CServerRecordingSessionManager * >( g_pServerReplayContext->GetRecordingSessionManager() ); }
inline CServerRecordingSessionBlockManager *SV_GetRecordingSessionBlockManager() { return static_cast< CServerRecordingSessionBlockManager * >( g_pServerReplayContext->GetRecordingSessionBlockManager() ); }
inline CSessionRecorder *SV_GetSessionRecorder() { return g_pServerReplayContext->m_pSessionRecorder; }
inline CFileserverCleaner *SV_GetFileserverCleaner() { return g_pServerReplayContext->m_pFileserverCleaner; }
inline const char *SV_GetBasePath() { return g_pServerReplayContext->m_pShared->m_strBasePath; }
inline IThreadPool *SV_GetThreadPool() { return g_pServerReplayContext->m_pShared->m_pThreadPool; }
inline char const *SV_GetFileserverIP() { return g_pServerReplayContext->m_szFileserverIP; }
inline char const *SV_GetFileserverProxyIP() { return g_pServerReplayContext->m_szFileserverProxyIP; }
CServerRecordingSession *SV_GetRecordingSessionInProgress(); const char *SV_GetTmpDir(); // Get "replay/server/tmp/"
bool SV_IsOffloadingEnabled();
class CJob; bool SV_RunJobToCompletion( CJob *pJob ); // NOTE: Adds to thread pool first
//----------------------------------------------------------------------------------------
#endif // SV_REPLAYCONTEXT_H
|