summaryrefslogtreecommitdiff
path: root/replay/shared_replaycontext.h
diff options
context:
space:
mode:
authorFluorescentCIAAfricanAmerican <[email protected]>2020-04-22 12:56:21 -0400
committerFluorescentCIAAfricanAmerican <[email protected]>2020-04-22 12:56:21 -0400
commit3bf9df6b2785fa6d951086978a3e66f49427166a (patch)
tree2c0f1f0c63c4832882bc93814ebd2c2b1c6224e5 /replay/shared_replaycontext.h
downloadarchived-source-engine-2018-hl2-src-master.tar.xz
archived-source-engine-2018-hl2-src-master.zip
Diffstat (limited to 'replay/shared_replaycontext.h')
-rw-r--r--replay/shared_replaycontext.h94
1 files changed, 94 insertions, 0 deletions
diff --git a/replay/shared_replaycontext.h b/replay/shared_replaycontext.h
new file mode 100644
index 0000000..85fc04d
--- /dev/null
+++ b/replay/shared_replaycontext.h
@@ -0,0 +1,94 @@
+//========= Copyright Valve Corporation, All rights reserved. ============//
+//
+//=======================================================================================//
+
+#ifndef SHARED_REPLAYCONTEXT_H
+#define SHARED_REPLAYCONTEXT_H
+#ifdef _WIN32
+#pragma once
+#endif
+
+//----------------------------------------------------------------------------------------
+
+#include "baserecordingsessionmanager.h"
+#include "baserecordingsessionblockmanager.h"
+#include "errorsystem.h"
+
+//----------------------------------------------------------------------------------------
+
+class CBaseRecordingSessionManager;
+class CBaseRecordingSessionBlockManager;
+class CErrorSystem;
+class IThreadPool;
+
+//----------------------------------------------------------------------------------------
+
+class CSharedReplayContext
+{
+public:
+ CSharedReplayContext( IReplayContext *pOwnerContext );
+ virtual ~CSharedReplayContext();
+
+ // Sets up public data members and such
+ virtual bool Init( CreateInterfaceFn fnFactory );
+ virtual void Shutdown();
+
+ virtual void Think();
+
+ virtual bool IsInitialized() const { return m_bInit; }
+
+ virtual const char *GetRelativeBaseDir() const;
+ virtual const char *GetBaseDir() const;
+ virtual const char *GetReplaySubDir() const;
+
+ IThreadPool *m_pThreadPool;
+
+ CBaseRecordingSessionManager *m_pRecordingSessionManager;
+ CBaseRecordingSessionBlockManager *m_pRecordingSessionBlockManager;
+
+ CErrorSystem *m_pErrorSystem;
+
+ CUtlString m_strRelativeBasePath; // eg: "/replay/server/"
+ CUtlString m_strBasePath; // eg: "/user/home/tfadmin/tf/replay/server/"
+ CUtlString m_strSubDir; // "client" or "server"
+
+ bool m_bInit; // Initialized yet? Set by outer class.
+
+private:
+ bool InitThreadPool();
+ void EnsureDirHierarchy();
+
+ IReplayContext *m_pOwnerContext;
+};
+
+//----------------------------------------------------------------------------------------
+
+#define LINK_TO_SHARED_REPLAYCONTEXT_IMP() \
+ CSharedReplayContext *m_pShared; \
+ virtual bool IsInitialized() const { return m_pShared && m_pShared->IsInitialized(); } \
+ virtual const char *GetRelativeBaseDir() const { return m_pShared->GetRelativeBaseDir(); } \
+ virtual const char *GetBaseDir() const { return m_pShared->GetBaseDir(); } \
+ virtual const char *GetReplaySubDir() const { return m_pShared->GetReplaySubDir(); } \
+ virtual IReplayErrorSystem *GetErrorSystem() { return m_pShared->m_pErrorSystem; } \
+ virtual IRecordingSessionManager *GetRecordingSessionManager() \
+ { \
+ return m_pShared->m_pRecordingSessionManager; \
+ } \
+ virtual CBaseRecordingSession *GetRecordingSession( ReplayHandle_t hSession ) \
+ { \
+ return static_cast< CBaseRecordingSession * >( m_pShared->m_pRecordingSessionManager->Find( hSession ) ); \
+ } \
+ virtual CBaseRecordingSessionBlockManager *GetRecordingSessionBlockManager() \
+ { \
+ return m_pShared->m_pRecordingSessionBlockManager; \
+ }
+
+//----------------------------------------------------------------------------------------
+
+class CJob;
+
+bool RunJobToCompletion( IThreadPool *pThreadPool, CJob *pJob );
+
+//----------------------------------------------------------------------------------------
+
+#endif // SHARED_REPLAYCONTEXT_H