void ForbidDeletePreservingHistory(long dontTouchGeneration, long[] usedFilesFromOldGenerations) { for (var i = 0; i < _fileStats.Length; i++) { if (!_keyValueDB.ContainsValuesAndDoesNotTouchGeneration((uint)i, dontTouchGeneration) || (usedFilesFromOldGenerations != null && Array.BinarySearch(usedFilesFromOldGenerations, _keyValueDB.GetGeneration((uint)i)) >= 0)) { _fileStats[i].MarkForbidToDelete(); } } }
void ForbidDeletePreservingHistory(long dontTouchGeneration, long[] usedFilesFromOldGenerations) { foreach (var fileStat in _fileStats.Index) { if (!_keyValueDB.ContainsValuesAndDoesNotTouchGeneration(_fileStats.KeyRef(fileStat), dontTouchGeneration) || (usedFilesFromOldGenerations != null && Array.BinarySearch(usedFilesFromOldGenerations, _keyValueDB.GetGeneration(_fileStats.KeyRef(fileStat))) >= 0)) { _fileStats.ValueRef(fileStat).MarkForbidToDelete(); } } }
void InitFileStats(long dontTouchGeneration) { _fileStats = new FileStat[_keyValueDB.FileCollection.FileInfos.Max(f => f.Key) + 1]; foreach (var file in _keyValueDB.FileCollection.FileInfos) { if (file.Key >= _fileStats.Length) { continue; } if (file.Value.SubDBId != 0) { continue; } if (!_keyValueDB.ContainsValuesAndDoesNotTouchGeneration(file.Key, dontTouchGeneration)) { continue; } _fileStats[file.Key] = new FileStat((uint)_keyValueDB.FileCollection.GetSize(file.Key)); } }