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.
80 lines
2.6 KiB
80 lines
2.6 KiB
//========= Copyright Valve Corporation, All rights reserved. ============// |
|
// |
|
//=======================================================================================// |
|
|
|
#ifndef CL_RECORDINGSESSIONBLOCK_H |
|
#define CL_RECORDINGSESSIONBLOCK_H |
|
#ifdef _WIN32 |
|
#pragma once |
|
#endif |
|
|
|
//---------------------------------------------------------------------------------------- |
|
|
|
#include "baserecordingsessionblock.h" |
|
#include "engine/http.h" |
|
|
|
//---------------------------------------------------------------------------------------- |
|
|
|
class CClientRecordingSessionBlock : public CBaseRecordingSessionBlock |
|
{ |
|
typedef CBaseRecordingSessionBlock BaseClass; |
|
|
|
public: |
|
CClientRecordingSessionBlock( IReplayContext *pContext ); |
|
|
|
bool NeedsUpdate() const; |
|
bool ShouldDownloadNow() const; |
|
bool DownloadedSuccessfully() const; |
|
|
|
int GetNumDownloadAttempts() const { return m_nDownloadAttempts; } |
|
|
|
virtual bool Read( KeyValues *pIn ); |
|
virtual void Write( KeyValues *pOut ); |
|
virtual void OnDelete(); |
|
|
|
// Resets the download status to be "ready for download" if the # of download attempts |
|
// is under 3. Returns false if reset failed, otherwise true. |
|
bool AttemptToResetForDownload(); |
|
|
|
// Checks data against the block's md5 digest |
|
bool ValidateData( const void *pData, int nSize, unsigned char *pOutHash = NULL ) const; |
|
|
|
enum DownloadStatus_t |
|
{ |
|
DOWNLOADSTATUS_ABORTED, // Download was aborted for some reason |
|
DOWNLOADSTATUS_ERROR, // Refer to m_nError for more detail |
|
DOWNLOADSTATUS_WAITING, // Waiting for the file to be ready on the server |
|
DOWNLOADSTATUS_READYTODOWNLOAD, // File is ready to be downloaded |
|
DOWNLOADSTATUS_CONNECTING, // Connecting to file server |
|
DOWNLOADSTATUS_DOWNLOADING, // Currently downloading |
|
DOWNLOADSTATUS_DOWNLOADED, // Successfully downloaded file |
|
|
|
MAX_DOWNLOADSTATUS |
|
}; |
|
|
|
// Persistent: |
|
DownloadStatus_t m_nDownloadStatus; |
|
uint32 m_uBytesDownloaded; |
|
bool m_bDataInvalid; // Hash didn't match data? |
|
HTTPError_t m_nHttpError; |
|
|
|
private: |
|
// Non-persistent: |
|
int m_nDownloadAttempts; // Should be modified via AttemptToResetForDownload() |
|
}; |
|
|
|
//---------------------------------------------------------------------------------------- |
|
|
|
inline CClientRecordingSessionBlock *CL_CastBlock( IReplaySerializeable *pBlock ) |
|
{ |
|
return static_cast< CClientRecordingSessionBlock * >( pBlock ); |
|
} |
|
|
|
inline const CClientRecordingSessionBlock *CL_CastBlock( const IReplaySerializeable *pBlock ) |
|
{ |
|
return static_cast< const CClientRecordingSessionBlock * >( pBlock ); |
|
} |
|
|
|
//---------------------------------------------------------------------------------------- |
|
|
|
#endif // CL_RECORDINGSESSIONBLOCK_H
|