+++ /dev/null
-/*****************************************************************************\r
-\r
- Defragment\r
-\r
-*****************************************************************************/\r
-\r
-\r
-#ifndef DEFRAGMENT_H\r
-#define DEFRAGMENT_H\r
-\r
-\r
-#include "Unfrag.h"\r
-#include "DriveVolume.h"\r
-#include "Mutex.h"\r
-\r
-\r
-extern int FitName (wchar_t *destination, const wchar_t *path, const wchar_t *filename, uint32 totalWidth);\r
-\r
-\r
-typedef struct DefragReport\r
-{\r
- wstring RootPath;\r
- uint64 DiskSizeBytes;\r
- uint64 DirsCount;\r
- uint64 FilesCount;\r
- uint64 FilesSizeBytes;\r
- uint64 FilesSizeOnDisk;\r
- uint64 FilesSizeClusters;\r
- uint64 FilesSlackBytes;\r
- uint32 FilesFragments;\r
- double AverageFragments; // = FilesFragments / FilesCount\r
- double PercentFragged;\r
- double PercentSlack;\r
-\r
- vector<uint32> FraggedFiles;\r
- vector<uint32> UnfraggedFiles;\r
- vector<uint32> UnmovableFiles;\r
-} DefragReport;\r
-\r
-\r
-class Defragment\r
-{\r
-public:\r
- Defragment (wstring Name, DefragType DefragMethod);\r
- ~Defragment ();\r
-\r
- // Commands\r
- void Start (void);\r
- void TogglePause (void);\r
- void Stop (void);\r
-\r
- // Info\r
- bool IsDoneYet (void);\r
- bool HasError (void);\r
- wstring GetStatusString (void);\r
- double GetStatusPercent (void);\r
- DefragType GetDefragType (void) { return (Method); }\r
- DefragReport &GetDefragReport (void) { return (Report); }\r
- DriveVolume &GetVolume (void) { return (Volume); }\r
-\r
- // Mutex\r
- void Lock (void) { DefragMutex.Lock (); }\r
- void Unlock (void) { DefragMutex.Unlock (); }\r
-\r
- // Limit length of status string to 70 chars?\r
- bool GetDoLimitLength (void) { return (DoLimitLength); }\r
- void SetDoLimitLength (bool L) { DoLimitLength = L; }\r
-\r
-private:\r
- void FastDefrag (void);\r
- void ExtensiveDefrag (void);\r
- void SetStatusString (wstring NewStatus);\r
-\r
- DWORD LastBMPUpdate; // Last time volume bitmap was updated\r
- DefragReport Report;\r
- bool DoLimitLength;\r
- DefragType Method;\r
- wstring DriveName;\r
- DriveVolume Volume;\r
- wstring StatusString;\r
- wstring ErrorString;\r
- double StatusPercent;\r
- Mutex DefragMutex;\r
- bool Error;\r
- bool Done;\r
- bool PleaseStop;\r
- bool PleasePause;\r
- DefragType DefragMethod;\r
-};\r
-\r
-\r
-#endif // DEFRAGMENT_H\r