Browse Source

no message

NHH 2 years ago
parent
commit
f8ab1c4901
1 changed files with 54 additions and 31 deletions
  1. 54 31
      RtpFilesCleaner.cpp

+ 54 - 31
RtpFilesCleaner.cpp

@@ -878,51 +878,74 @@ void ClearRtpFiles::Get_Channels(const char* backup_folder, const char* src_fold
 		BLOG_ERROR(fmt::format("[F] *** failed to load src_folder file vec_back_foldernames {}***", backup_folder));
 		return;
 	}
-
-	for (auto src : vec_src_foldernames) {
-		std::string src_ = std::string(src);
-		std::string src_channel = get_Item(src_);
-		for (auto back : vec_back_foldernames) {
-			std::string bak = std::string(back);
-			std::string back_channel = get_Item(bak);
-			if (back_channel == src_channel) {
-				Check_Channels(src_, bak);
-				break;
-			}
-		}
-	}
-	//剩余空间小于要求值,删除主存储
 	std::vector<char*> src_daytmp_name;
+
+	//磁盤空間小於某個值刪除主目录最舊的一天文件
 	std::string serial = std::string(vec_src_foldernames.front());
 	serial = serial.substr(0, serial.find("\\"));
 	int gb_data = Get_Disk_Free(serial);
 	BLOG_DEBUG(fmt::format("Get_Disk_Free {}", gb_data));
-	int index = 0;
-	int i = 0;
 	if (remaining_memory >= gb_data) {
 		for (auto s : vec_src_foldernames) {
 			Get_DateFiles(&src_daytmp_name, s);
 			Folder_Sort(&src_daytmp_name, &vec_src_date_folder);
-			if (vec_src_date_folder.size() >= retension_day) {
-				index = vec_src_date_folder.size() - retension_day;
-				for (auto d : vec_src_date_folder) {
-					if (i >= index)
-						break;
-					BLOG_DEBUG(fmt::format("Delete SRC Folder {}", d));
+			for (auto d : vec_src_date_folder) {
+				BLOG_DEBUG(fmt::format("remaining_memory Delete SRC Folder {}", d));
 #ifdef _DEBUG1
-					//SHDeleteFolder(d, false);
+				//SHDeleteFolder(d, false);
 #endif 
-					i++;
+				std::vector<char*>::iterator iter;
+				for (iter = vec_src_date_folder.begin(); iter != vec_src_date_folder.end();) {
+					delete[](*iter);
+					*iter = NULL;
+					iter = vec_src_date_folder.erase(iter);
 				}
+				vec_src_date_folder.clear();
+				break;
 			}
-			std::vector<char*>::iterator iter;
-			for (iter = vec_src_date_folder.begin(); iter != vec_src_date_folder.end();) {
-				delete[] (*iter);
-				*iter = NULL;
-				iter = vec_src_date_folder.erase(iter);
+		}
+	}
+
+	//首先保证主目录存留retension_day设置的天数
+	int index = 0;
+	int i = 0;
+	for (auto s : vec_src_foldernames) {
+		Get_DateFiles(&src_daytmp_name, s);
+		Folder_Sort(&src_daytmp_name, &vec_src_date_folder);
+		if (vec_src_date_folder.size() >= retension_day) {
+			index = vec_src_date_folder.size() - retension_day;
+			BLOG_DEBUG(fmt::format("index {},retension_day {}", index,retension_day));
+			for (auto d : vec_src_date_folder) {
+				if (i >= index)
+					break;
+				BLOG_DEBUG(fmt::format("retension_day Delete SRC Folder {}", d));
+#ifdef _DEBUG1
+				//SHDeleteFolder(d, false);
+#endif 
+				i++;
+			}
+		}
+		std::vector<char*>::iterator iter;
+		for (iter = vec_src_date_folder.begin(); iter != vec_src_date_folder.end();) {
+			delete[](*iter);
+			*iter = NULL;
+			iter = vec_src_date_folder.erase(iter);
+		}
+		vec_src_date_folder.clear();
+		i = 0;
+		index = 0;
+	}
+
+	for (auto src : vec_src_foldernames) {
+		std::string src_ = std::string(src);
+		std::string src_channel = get_Item(src_);
+		for (auto back : vec_back_foldernames) {
+			std::string bak = std::string(back);
+			std::string back_channel = get_Item(bak);
+			if (back_channel == src_channel) {
+				Check_Channels(src_, bak);
+				break;
 			}
-			vec_src_date_folder.clear();
-			i = 0;
 		}
 	}