From 52a6383c4971bbc593326048f1f2c2e3496f8b51 Mon Sep 17 00:00:00 2001 From: Nicholas Hastings Date: Thu, 23 Jun 2011 18:04:51 -0400 Subject: [PATCH] VFileSystem019 update (bug 4965). --- public/filesystem.h | 23 ++++++++++++++++++++++- public/filesystem_passthru.h | 23 +++++++++++++++++++++++ 2 files changed, 45 insertions(+), 1 deletion(-) diff --git a/public/filesystem.h b/public/filesystem.h index f87fb72b..b856a6c3 100644 --- a/public/filesystem.h +++ b/public/filesystem.h @@ -401,7 +401,7 @@ public: // Main file system interface //----------------------------------------------------------------------------- -#define FILESYSTEM_INTERFACE_VERSION "VFileSystem017" +#define FILESYSTEM_INTERFACE_VERSION "VFileSystem019" abstract_class IFileSystem : public IAppSystem, public IBaseFileSystem { @@ -549,6 +549,10 @@ public: virtual FSAsyncStatus_t AsyncFlush() = 0; virtual bool AsyncSuspend() = 0; virtual bool AsyncResume() = 0; + + // Next two functions each take an IAsyncFileFetch ptr. + virtual void AsyncAddFetcher( void *pFetch ) = 0; + virtual void AsyncRemoveFetcher( void *pFetch ) = 0; //------------------------------------ // Functions to hold a file open if planning on doing mutiple reads. Use is optional, @@ -720,6 +724,11 @@ public: // with check_crc. Then it calls CheckCachedFileCRC later when it gets client requests to verify CRCs. virtual void CacheFileCRCs( const char *pPathname, ECacheCRCType eType, IFileList *pFilter ) = 0; virtual EFileCRCStatus CheckCachedFileCRC( const char *pPathID, const char *pRelativeFilename, CRC32_t *pCRC ) = 0; + + virtual void CacheFileMD5s( const char *pPathname, ECacheCRCType eType, IFileList *pFilter ) = 0; + + // Last param is an MD5Value_t pointer. + virtual EFileCRCStatus CheckCachedFileMD5( const char *pPathID, const char *pRelativeFilename, void *pMD5 ) = 0; // Fills in the list of files that have been loaded off disk and have not been verified. // Returns the number of files filled in (between 0 and nMaxFiles). @@ -728,6 +737,9 @@ public: // returned from here again. // The client sends batches of these to the server to verify. virtual int GetUnverifiedCRCFiles( CUnverifiedCRCFile *pFiles, int nMaxFiles ) = 0; + + // First param is a CUnverifiedMD5File pointer. + virtual int GetUnverifiedMD5Files( void *pFiles, int nMaxFiles ) = 0; // Control debug message output. // Pass a combination of WHITELIST_SPEW_ flags. @@ -736,6 +748,15 @@ public: // Installs a callback used to display a dirty disk dialog virtual void InstallDirtyDiskReportFunc( FSDirtyDiskReportFunc_t func ) = 0; + + // This looks to return a "CFileCacheObject" object. + virtual void *CreateFileCache( void ) = 0; + + // Assuming that the first param in each of these is also a CFileCacheObject ptr. + virtual void AddFilesToFileCache( void *pFileCache, const char **, int size, const char * ) = 0; + virtual bool IsFileCacheFileLoaded( void *pFileCache, const char *szFile ) = 0; + virtual bool IsFileCacheLoaded( void *pFileCache ) = 0; + virtual void DestroyFileCache( void *pFileCache ) = 0; }; //----------------------------------------------------------------------------- diff --git a/public/filesystem_passthru.h b/public/filesystem_passthru.h index 5a0bc2fe..b1b1041e 100644 --- a/public/filesystem_passthru.h +++ b/public/filesystem_passthru.h @@ -172,6 +172,9 @@ public: virtual FSAsyncStatus_t AsyncSetPriority(FSAsyncControl_t hControl, int newPriority) { return m_pFileSystemPassThru->AsyncSetPriority(hControl, newPriority); } virtual bool AsyncSuspend() { return m_pFileSystemPassThru->AsyncSuspend(); } virtual bool AsyncResume() { return m_pFileSystemPassThru->AsyncResume(); } + // Next two functions each take an IAsyncFileFetch ptr. + virtual void AsyncAddFetcher( void *pFetch ) { return m_pFileSystemPassThru->AsyncAddFetcher(pFetch); } + virtual void AsyncRemoveFetcher( void *pFetch ) { return m_pFileSystemPassThru->AsyncRemoveFetcher(pFetch); } virtual const char *RelativePathToFullPath( const char *pFileName, const char *pPathID, char *pLocalPath, int localPathBufferSize, PathTypeFilter_t pathFilter = FILTER_NONE, PathTypeQuery_t *pPathType = NULL ) { return m_pFileSystemPassThru->RelativePathToFullPath( pFileName, pPathID, pLocalPath, localPathBufferSize, pathFilter, pPathType ); } virtual int GetSearchPath( const char *pathID, bool bGetPackFiles, char *pPath, int nMaxLen ) { return m_pFileSystemPassThru->GetSearchPath( pathID, bGetPackFiles, pPath, nMaxLen ); } @@ -220,16 +223,36 @@ public: { m_pFileSystemPassThru->MarkAllCRCsUnverified(); } virtual void CacheFileCRCs( const char *pPathname, ECacheCRCType eType, IFileList *pFilter ) { return m_pFileSystemPassThru->CacheFileCRCs( pPathname, eType, pFilter ); } + virtual void CacheFileMD5s( const char *pPathname, ECacheCRCType eType, IFileList *pFilter ) + { return m_pFileSystemPassThru->CacheFileMD5s( pPathname, eType, pFilter ); } virtual EFileCRCStatus CheckCachedFileCRC( const char *pPathID, const char *pRelativeFilename, CRC32_t *pCRC ) { return m_pFileSystemPassThru->CheckCachedFileCRC( pPathID, pRelativeFilename, pCRC ); } + virtual EFileCRCStatus CheckCachedFileMD5( const char *pPathID, const char *pRelativeFilename, void *pMD5 ) + { return m_pFileSystemPassThru->CheckCachedFileMD5( pPathID, pRelativeFilename, pMD5 ); } virtual int GetUnverifiedCRCFiles( CUnverifiedCRCFile *pFiles, int nMaxFiles ) { return m_pFileSystemPassThru->GetUnverifiedCRCFiles( pFiles, nMaxFiles ); } + virtual int GetUnverifiedMD5Files( void *pFiles, int nMaxFiles ) + { return m_pFileSystemPassThru->GetUnverifiedMD5Files( pFiles, nMaxFiles ); } virtual int GetWhitelistSpewFlags() { return m_pFileSystemPassThru->GetWhitelistSpewFlags(); } virtual void SetWhitelistSpewFlags( int spewFlags ) { m_pFileSystemPassThru->SetWhitelistSpewFlags( spewFlags ); } virtual void InstallDirtyDiskReportFunc( FSDirtyDiskReportFunc_t func ) { m_pFileSystemPassThru->InstallDirtyDiskReportFunc( func ); } + // This looks to return a "CFileCacheObject" object. + virtual void *CreateFileCache() + { return m_pFileSystemPassThru->CreateFileCache(); } + + // Assuming that the first param in each of these is also a CFileCacheObject ptr. + virtual void AddFilesToFileCache( void *pFileCache, const char **pszUnk1, int size, const char *szUnk2 ) + { m_pFileSystemPassThru->AddFilesToFileCache( pFileCache, pszUnk1, size, szUnk2 ); } + virtual bool IsFileCacheFileLoaded( void *pFileCache, const char *szFile ) + { return m_pFileSystemPassThru->IsFileCacheFileLoaded( pFileCache, szFile ); } + virtual bool IsFileCacheLoaded( void *pFileCache ) + { return m_pFileSystemPassThru->IsFileCacheLoaded( pFileCache ); } + virtual void DestroyFileCache( void *pFileCache ) + { m_pFileSystemPassThru->DestroyFileCache( pFileCache ); } + protected: IFileSystem *m_pFileSystemPassThru; };