// // Created by kikab on 04.06.2018. // #ifndef LOTRO_DAT_LIBRARY_DATBACKUP_H #define LOTRO_DAT_LIBRARY_DATBACKUP_H #include #include extern "C++" { namespace LOTRO_DAT { class DatFile; /*! * \brief Модуль резервного копирования файлов * \author Gi1dor * \date 30.06.2018 * * Класс для осуществления резервного копирования без деинициализации модулей и потери данных dat файла. * * \warning Объекты этого класса не должны создаваться отдельно! Созданием и управлением ими занимается класс DatFile */ class DatBackupManager { public: DatBackupManager() = delete; DatBackupManager(const DatBackupManager &other) = delete; DatBackupManager &operator=(const DatBackupManager &other) = delete; ~DatBackupManager() = default; explicit DatBackupManager(DatFile *datFilePtr); bool CheckIfBackupAvailable(const std::string &backup_datname); DatOperationResult<> CreateBackup(const std::string &backup_datname); DatOperationResult<> RestoreFromBackup(const std::string &backup_datname); DatOperationResult<> RemoveBackup(const std::string &backup_datname); private: DatOperationResult<> CopyDatFile(DatFile &source, FILE* target); DatFile *dat; const unsigned COPY_BLOCK_SIZE = 16 * 1024 * 1024; // 16 megabytes }; } }; #endif //LOTRO_DAT_LIBRARY_DATBACKUP_H