12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182 |
- #ifndef LOTRO_DAT_LIBRARY_DATSTATUS_H
- #define LOTRO_DAT_LIBRARY_DATSTATUS_H
- #include <string>
- #include <functional>
- #include <vector>
- namespace LOTRO_DAT {
- class DatFile;
- /*!
- * \brief Модуль статуса dat-файла
- * \author Gi1dor
- * \date 06.07.2018
- *
- * Класс для хранения информации о выполняемых процессах в dat-файле. Позволяет отслеживать прогресс выполнения
- * во время операций создания резервных копий, применения патчей или извлечения файлов
- *
- * \warning Объекты этого класса не должны создаваться отдельно! Созданием и управлением ими занимается класс DatFile
- */
- class DatStatus {
- public:
- enum DAT_STATUS: int {
- E_INITIALISING,
- E_EXTRACTING,
- E_PATCHING,
- E_COMMITING,
- E_BACKUP_CREATING,
- E_BACKUP_RESTORING,
- E_BACKUP_REMOVING,
- E_GATHERING_INFO,
- E_FREE
- };
- DatStatus() = delete;
- DatStatus(const DatStatus &other) = delete;
- DatStatus &operator=(const DatStatus &other) = delete;
- ~DatStatus() = default;
- explicit DatStatus(DatFile *datFilePtr);
- void UpdateStatus();
-
- void SetPercentage();
- void SetFinishedParts(unsigned long long finished_parts);
- void SetTotalParts(unsigned long long total_parts);
- unsigned GetPercentage();
- void SetDebugMessage(const std::string &message);
- std::string GetDebugMessage();
- void SetStatus(DAT_STATUS status);
- DAT_STATUS GetStatus();
- bool CheckIfNotPatched();
- void ClearAll();
- private:
- DatFile *dat;
- double percentage_;
- unsigned long long finished_parts_;
- unsigned long long total_parts_;
- DAT_STATUS status_;
- using callback = std::function<void(double, unsigned long long, unsigned long long, DAT_STATUS)>;
- std::vector<callback> callback_functions_lazy_;
- std::vector<callback> callback_functions_unoptimized_;
- std::string debug_message_;
- };
- }
- #endif //LOTRO_DAT_LIBRARY_DATSTATUS_H
|