public override void Clean(BackUpInfo backUp) { if (backUp.BackupSize > maxBackupSize) { int i = 0; while (backUp.BackupSize > maxBackupSize && i < backUp.listOfRestorePoints.Count) { if (backUp.listOfRestorePoints[i] is IncrementalRestorePoint) { IncrementalRestorePoint tmp = (IncrementalRestorePoint)backUp.listOfRestorePoints[i]; if (tmp.id == tmp.deltaPointId) { throw new Exception("Error! You can't delete this restore point"); } } else { backUp.BackupSize -= backUp.listOfRestorePoints[i].size; backUp.listOfRestorePoints.RemoveAt(i); } i += 1; } } backUp.saveAlgo.Save(backUp); }
public override void Clean(BackUpInfo backUp) { CleaningByAmount cleaningByAmount = new CleaningByAmount(maxRestorePointsCount); CleaningByDate cleaningByDate = new CleaningByDate(); CleaningBySize cleaningBySize = new CleaningBySize(maxBackupSize); indexesToRemove = new List <int>(); for (int i = 0; i < backUp.listOfRestorePoints.Count; i++) { int currentCnt = CountOfLimits(backUp, i, cleaningByAmount, cleaningByDate, cleaningBySize); if (currentCnt > 0) { if (flag || (!flag && currentCnt == 3)) { if (backUp.listOfRestorePoints[i] is IncrementalRestorePoint) { IncrementalRestorePoint tmp = (IncrementalRestorePoint)backUp.listOfRestorePoints[i]; if (tmp.id == tmp.deltaPointId) { throw new Exception("Error! You can't delete this restore point"); } else { indexesToRemove.Add(i); } } else { indexesToRemove.Add(i); } } } } RemoveByIndex(backUp); backUp.saveAlgo.Save(backUp); }