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.
76 lines
2.2 KiB
76 lines
2.2 KiB
//========= Copyright Valve Corporation, All rights reserved. ============// |
|
// |
|
//=======================================================================================// |
|
|
|
#ifndef SV_SESSIONPUBLISHMANAGER_H |
|
#define SV_SESSIONPUBLISHMANAGER_H |
|
#ifdef _WIN32 |
|
#pragma once |
|
#endif |
|
|
|
//---------------------------------------------------------------------------------------- |
|
|
|
#include "replay/replayhandle.h" |
|
|
|
//---------------------------------------------------------------------------------------- |
|
|
|
class CServerRecordingSession; |
|
class CSessionBlockPublisher; |
|
class CSessionInfoPublisher; |
|
|
|
//---------------------------------------------------------------------------------------- |
|
|
|
// |
|
// CSessionPublishManager takes care of all the publishing for a particular session. |
|
// For asynchronous publishing of block and session info data, publishing can |
|
// sometimes overlap between rounds, as is sometimes the case for FTP. |
|
// |
|
// A CSessionPublishManager instance are created by passing in the in-progress recording |
|
// session into the constructor. |
|
// |
|
// CSessionRecorder maintains a list of CSessionPublishManager instances and cleans |
|
// them up once all publishing for their corresponding session is completed. |
|
// |
|
|
|
class CSessionPublishManager |
|
{ |
|
public: |
|
CSessionPublishManager( CServerRecordingSession *pSession ); |
|
~CSessionPublishManager(); |
|
|
|
void Think(); // Called explicitly |
|
|
|
// Finish any publish jobs synchronously |
|
void PublishAllSynchronous(); |
|
|
|
// Have all publish job completed? |
|
bool IsDone() const; |
|
|
|
// This will flag this publish manager as recording |
|
void OnStartRecording(); |
|
|
|
// This will write out and publish any final session block |
|
void OnStopRecord( bool bAborting ); |
|
|
|
// Get the handle for the associated session |
|
ReplayHandle_t GetSessionHandle() const; |
|
|
|
// Unlock the associated session - this should only be called if IsDone() returns true. |
|
void UnlockSession(); |
|
|
|
// Abort publishing |
|
void AbortPublish(); |
|
|
|
#ifdef _DEBUG |
|
void Validate(); |
|
#endif |
|
|
|
private: |
|
CServerRecordingSession *m_pSession; |
|
CSessionBlockPublisher *m_pBlockPublisher; |
|
CSessionInfoPublisher *m_pSessionInfoPublisher; |
|
}; |
|
|
|
//---------------------------------------------------------------------------------------- |
|
|
|
#endif // SV_SESSIONPUBLISHMANAGER_H
|
|
|