00001 00027 #pragma once 00028 00029 #include "types.h" 00030 #include "WorkQueue.h" 00031 00032 // --> Moonlight: Sparse&Compressed support 00033 // Moonlight: Sparse&Compressed support <-- 00034 00047 class CAdvFileAttr : CWorkQueueItem 00048 { 00049 public: 00050 CAdvFileAttr(CFile *file = NULL); 00051 ~CAdvFileAttr(void); 00052 00053 public: 00054 bool MakeSparse (bool forceScan = false); 00055 bool MakeCompressed (bool makeCompressed = true); 00056 void SetFilePtr (CFile *file = NULL); 00057 bool LoadAttributes (void); 00058 00060 void Cancel (void); 00062 uint32 GetTempFSCappabilities (void) {return m_TempFSCapabilities;} 00064 uint32 GetFileAttributes (void) {return m_FileAttributes;} 00065 00067 bool isSparse (void) {return (m_FileAttributes & FILE_ATTRIBUTE_SPARSE_FILE) != 0;} 00069 bool isCompressed (void) {return (m_FileAttributes & FILE_ATTRIBUTE_COMPRESSED) != 0;} 00071 bool isFSSparse (void) {return (m_TempFSCapabilities & FILE_SUPPORTS_SPARSE_FILES) != 0;} 00073 bool isFSCompressed (void) {return (m_TempFSCapabilities & FILE_FILE_COMPRESSION) != 0;} 00075 bool isBusy (void) {return m_LastOp != TOps_Nothing;} 00077 bool isCancel (void) {return m_LastOp == TOps_Cancel;} 00078 00079 void ThreadWork (void); 00080 00081 private: 00082 bool WorkSparse (void); 00083 void WorkCompress (void); 00084 void QueueDelCB (void) {m_LastOp = TOps_Nothing;} 00085 00086 private: 00088 static CWorkQueue m_WorkQueue; 00089 00091 enum { 00092 TOps_Nothing, 00093 TOps_Compress, 00094 TOps_Sparse, 00095 TOps_Cancel 00096 } m_LastOp; 00097 00099 uint32 m_FileAttributes; 00101 uint32 m_TempFSCapabilities; 00103 CFile *m_pCFile; 00104 };
1.3.4