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.
135 lines
3.8 KiB
135 lines
3.8 KiB
5 years ago
|
//========= 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
|