DatStatus.h 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. #ifndef LOTRO_DAT_LIBRARY_DATSTATUS_H
  2. #define LOTRO_DAT_LIBRARY_DATSTATUS_H
  3. #include <string>
  4. #include <functional>
  5. #include <vector>
  6. namespace LOTRO_DAT {
  7. class DatFile;
  8. /*!
  9. * \brief Модуль статуса dat-файла
  10. * \author Gi1dor
  11. * \date 06.07.2018
  12. *
  13. * Класс для хранения информации о выполняемых процессах в dat-файле. Позволяет отслеживать прогресс выполнения
  14. * во время операций создания резервных копий, применения патчей или извлечения файлов
  15. *
  16. * \warning Объекты этого класса не должны создаваться отдельно! Созданием и управлением ими занимается класс DatFile
  17. */
  18. class DatStatus {
  19. public:
  20. enum DAT_STATUS: int {
  21. E_INITIALISING,
  22. E_EXTRACTING,
  23. E_PATCHING,
  24. E_COMMITING,
  25. E_BACKUP_CREATING,
  26. E_BACKUP_RESTORING,
  27. E_BACKUP_REMOVING,
  28. E_GATHERING_INFO,
  29. E_FREE
  30. };
  31. DatStatus() = delete;
  32. DatStatus(const DatStatus &other) = delete;
  33. DatStatus &operator=(const DatStatus &other) = delete;
  34. ~DatStatus() = default;
  35. explicit DatStatus(DatFile *datFilePtr);
  36. void UpdateStatus();
  37. void SetPercentage();
  38. void SetFinishedParts(unsigned long long finished_parts);
  39. void SetTotalParts(unsigned long long total_parts);
  40. unsigned GetPercentage();
  41. void SetDebugMessage(const std::string &message);
  42. std::string GetDebugMessage();
  43. void SetStatus(DAT_STATUS status);
  44. DAT_STATUS GetStatus();
  45. bool CheckIfNotPatched();
  46. void ClearAll();
  47. private:
  48. DatFile *dat;
  49. double percentage_;
  50. unsigned long long finished_parts_;
  51. unsigned long long total_parts_;
  52. DAT_STATUS status_;
  53. using callback = std::function<void(double, unsigned long long, unsigned long long, DAT_STATUS)>;
  54. std::vector<callback> callback_functions_lazy_;
  55. std::vector<callback> callback_functions_unoptimized_;
  56. std::string debug_message_;
  57. };
  58. }
  59. #endif //LOTRO_DAT_LIBRARY_DATSTATUS_H