Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019 #ifndef __CS_UTIL_VFSCACHE_H__
00020 #define __CS_UTIL_VFSCACHE_H__
00021
00025 #include "csextern.h"
00026 #include "iutil/cache.h"
00027 #include "csutil/csstring.h"
00028 #include "csutil/scf_implementation.h"
00029
00030 struct iObjectRegistry;
00031 struct iVFS;
00032
00036 class CS_CRYSTALSPACE_EXPORT csVfsCacheManager :
00037 public scfImplementation1<csVfsCacheManager, iCacheManager>
00038 {
00039 private:
00040 iObjectRegistry* object_reg;
00041 char* vfsdir;
00042 csRef<iVFS> vfs;
00043 csString current_type;
00044 csString current_scope;
00045 bool readonly;
00046
00047 iVFS* GetVFS ();
00048
00049 void CacheName (csStringFast<512>& buf, const char* type, const char* scope,
00050 uint32 id);
00051 void RecursiveDelete (const char* fn);
00052 public:
00057 csVfsCacheManager (iObjectRegistry* object_reg, const char* vfsdir);
00058
00059 virtual ~csVfsCacheManager ();
00060
00061
00062 virtual void SetReadOnly (bool ro) { readonly = ro; }
00063 virtual bool IsReadOnly () const { return readonly; }
00064
00068 virtual void SetCurrentType (const char* type);
00072 virtual const char* GetCurrentType () const { return current_type; }
00076 virtual void SetCurrentScope (const char* scope);
00080 virtual const char* GetCurrentScope () const { return current_scope; }
00084 virtual bool CacheData (const void* data, size_t size,
00085 const char* type, const char* scope, uint32 id);
00090 virtual csPtr<iDataBuffer> ReadCache (const char* type, const char* scope,
00091 uint32 id);
00095 virtual bool ClearCache (const char* type = 0, const char* scope = 0,
00096 const uint32* id = 0);
00097
00101 virtual void Flush ();
00102 };
00103
00104 #endif // __CS_UTIL_VFSCACHE_H__
00105