示例#1
0
        public void Clean(ICleanAlgorithm cleanAlgorithm)
        {
            int count = cleanAlgorithm.GetForRemove(_restorePoints);

            if (count == _restorePoints.Count)
            {
                count--;
            }
            if (count == 0)
            {
                return;
            }

            IEnumerable <RestorePoint> restorePointsForRemove = _restorePoints.Take(count);

            if (_restorePoints[count].RestoreType == RestoreType.Increment)
            {
                restorePointsForRemove = restorePointsForRemove
                                         .Reverse()
                                         .SkipWhile(x => x.RestoreType == RestoreType.Increment)
                                         .Skip(1);
            }

            _restorePoints = _restorePoints.Skip(restorePointsForRemove.Count()).ToList();
        }
示例#2
0
文件: Backup.cs 项目: s4xack/Oop
        public Backup(IStorageAlgorithm storageAlgorithm, ICleanAlgorithm cleanAlgorithm, IFileRepository fileRepository, DateTimeProvider dateTimeProvider)
        {
            _storageAlgorithm = storageAlgorithm ?? throw new ArgumentNullException(nameof(storageAlgorithm));
            _cleanAlgorithm   = cleanAlgorithm ?? throw new ArgumentNullException(nameof(cleanAlgorithm));
            _fileRepository   = fileRepository ?? throw new ArgumentNullException(nameof(fileRepository));
            _dateTimeProvider = dateTimeProvider ?? throw new ArgumentNullException(nameof(dateTimeProvider));

            Id = Guid.NewGuid();
            _watchedFilePaths = new List <String>();
            _restorePoints    = new List <RestorePoint>();
        }