DatBackupManager.h 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. //
  2. // Created by kikab on 04.06.2018.
  3. //
  4. #ifndef LOTRO_DAT_LIBRARY_DATBACKUP_H
  5. #define LOTRO_DAT_LIBRARY_DATBACKUP_H
  6. #include <string>
  7. #include "../DatOperationResult.h"
  8. extern "C++" {
  9. namespace LOTRO_DAT {
  10. class DatFile;
  11. /*!
  12. * \brief Модуль резервного копирования файлов
  13. * \author Gi1dor
  14. * \date 30.06.2018
  15. *
  16. * Класс для осуществления резервного копирования без деинициализации модулей и потери данных dat файла.
  17. *
  18. * \warning Объекты этого класса не должны создаваться отдельно! Созданием и управлением ими занимается класс DatFile
  19. */
  20. class DatBackupManager {
  21. public:
  22. DatBackupManager() = delete;
  23. DatBackupManager(const DatBackupManager &other) = delete;
  24. DatBackupManager &operator=(const DatBackupManager &other) = delete;
  25. ~DatBackupManager() = default;
  26. explicit DatBackupManager(DatFile *datFilePtr);
  27. bool CheckIfBackupAvailable(const std::string &backup_datname);
  28. DatOperationResult<> CreateBackup(const std::string &backup_datname);
  29. DatOperationResult<> RestoreFromBackup(const std::string &backup_datname);
  30. DatOperationResult<> RemoveBackup(const std::string &backup_datname);
  31. private:
  32. DatOperationResult<> CopyDatFile(DatFile &source, FILE* target);
  33. DatFile *dat;
  34. const unsigned COPY_BLOCK_SIZE = 16 * 1024 * 1024; // 16 megabytes
  35. };
  36. }
  37. };
  38. #endif //LOTRO_DAT_LIBRARY_DATBACKUP_H