#ifndef MYBACKUPMANAGER_H #define MYBACKUPMANAGER_H #include #include #include #include #include "../common/mydefine.h" #include "../common/spinlock_mutex.h" class MyBackupManager : public QObject { Q_OBJECT // Q_CLASSINFO("D-Bus Interface", "com.kylin.backup.manager") public: explicit MyBackupManager(); virtual ~MyBackupManager(); signals: // 环境检查结果信号 void sendEnvCheckResult(int result); // 开始备份结果信号 void sendStartBackupResult(int result); // 备份结果信号 void sendBackupResult(bool result); // 进度信号 void sendRate(int, int); // 还原结果信号 void sendRestoreResult(bool result); // 删除备份结果信号 void sendDeleteResult(bool result); // ghost备份结果信号 void sendGhostBackupResult(bool result); public slots: // 备份分区挂载 int Mount_backup_partition(); // 环境检测 int checkEnv(const BackupWrapper& backupWrapper); // 备份 int goBackup(const BackupWrapper& backupWrapper); // 还原 int goRestore(const BackupWrapper& backupWrapper); // 删除备份 int deleteBackupPoint(const BackupWrapper& backupWrapper); // ghost镜像 int ghostBackup(const BackupWrapper& backupWrapper); // 控制面板调用的备份接口,重构暂时先兼容以前的老接口 void autoBackUpForSystemUpdate_noreturn(const QString& autobackup_name, const QString& create_note, const QString& inc_note, const QString& frontUserName, int frontUid); // 控制面板调用的获取系统备份接口 QString getBackupCommentForSystemUpdate(QString& state); // 获取备份状态 int getBackupState(bool& isActive); // 取消操作 int cancel(); // 任务结束 void finished(); private: // 锁定 bool lock(int frontUid); // 解锁 bool unlock(); // 自旋锁 spinlock_mutex m_mutex; private: // 锁文件描述符 int m_fdLockFile = -1; // 备份还原状态 BackupState m_backupState = BackupState::BACKUP_STATE_INIT; // 是否活动的,兼容以前用的,和m_backupState的实际使用功能有重复 bool m_isActive = false; // 工作者线程 QThread workerThread; }; #endif // MYBACKUPMANAGER_H