From 90eca8593a4b9b70b408fbebb7dd0c33a57a883d Mon Sep 17 00:00:00 2001 From: Wannabe Date: Fri, 9 May 2025 15:11:40 +0800 Subject: [PATCH] Optimise the transmission mechanism of the backup framework. Signed-off-by: Wannabe --- .../native/backup_ext/include/ext_extension.h | 21 ++- .../native/backup_ext/src/ext_extension.cpp | 71 ++++---- .../backup_ext/src/sub_ext_extension.cpp | 161 ++++++++++++++++++ .../src/module_ipc/svc_session_manager.cpp | 2 + utils/BUILD.gn | 1 + utils/include/b_resources/b_constants.h | 2 +- utils/include/b_utils/scan_file_singleton.h | 69 ++++++++ utils/src/b_filesystem/b_dir.cpp | 13 +- utils/src/b_utils/scan_file_singleton.cpp | 107 ++++++++++++ 9 files changed, 408 insertions(+), 39 deletions(-) create mode 100644 utils/include/b_utils/scan_file_singleton.h create mode 100644 utils/src/b_utils/scan_file_singleton.cpp diff --git a/frameworks/native/backup_ext/include/ext_extension.h b/frameworks/native/backup_ext/include/ext_extension.h index f298b40f9..9fdccf416 100644 --- a/frameworks/native/backup_ext/include/ext_extension.h +++ b/frameworks/native/backup_ext/include/ext_extension.h @@ -96,11 +96,22 @@ private: * @brief backup * * @param bigFileInfo bigfiles to be backup + * @param bigFileInfoBackuped bigfiles have been backuped * @param smallFiles smallfiles to be backup * @param includesNum sizeof includes * @param excludesNum sizeof excludes */ - int DoBackup(TarMap &bigFileInfo, map &smallFiles, uint32_t includesNum, uint32_t excludesNum); + int DoBackup(TarMap &bigFileInfo, TarMap &bigFileInfoBackuped, map &smallFiles, + uint32_t includesNum, uint32_t excludesNum); + + /** + * @brief backup + * + * @param bigFileInfo bigfiles to be backup + * @param backupedFileSize backuped file size + */ + int DoBackupBigFiles(TarMap &bigFileInfo, uint_32 backupedFileSize); + /** * @brief restore @@ -207,7 +218,7 @@ private: int DoIncrementalBackupTask(UniqueFd incrementalFd, UniqueFd manifestFd); ErrCode IncrementalBigFileReady(TarMap &pkgInfo, const vector &bigInfos, sptr proxy); - ErrCode BigFileReady(TarMap &bigFileInfo, sptr proxy); + ErrCode BigFileReady(TarMap &bigFileInfo, sptr proxy, unint32_t BackupedFileSize); void WaitToSendFd(std::chrono::system_clock::time_point &startTime, int &fdSendNum); void RefreshTimeInfo(std::chrono::system_clock::time_point &startTime, int &fdSendNum); void IncrementalPacket(const vector &infos, TarMap &tar, sptr proxy); @@ -353,6 +364,12 @@ private: tuple GetIncreFileHandleForSpecialVersion(const string &fileName); void RmBigFileReportForSpecialCloneCloud(const std::string &srcFile); string GetReportFileName(const string &fileName); + void CalculateDataSizeTask(const string &config); + void DoBackUpTask(const string &config); + TarMap Transfer2Bigfiles(std::map files); + void PreDealExcludes(std::vector &excludes); + template