/// <summary>Move indices forward in preparation for insert.</summary> /// <param name="cache">Cache to modify.</param> /// <param name="index">Descendant index.</param> private static void ShiftForInsert(IIndexedCache <Builder> cache, int index) { var values = cache.ToList(); foreach (var builder in values.Where(v => v.Key >= index).Select(value => value.Value)) { builder.Index++; } cache.Clear(); foreach (var value in values) { cache[value.Value.Index] = value.Value; } }
/// <summary> /// Конструктор класса. /// </summary> /// <param name="sourceValidator">Распознаватель источников по пути.</param> /// <param name="sourceStorage">Хранилище с источниками.</param> /// <param name="indexChecker">Валидатор индекса под логику анализа.</param> /// <param name="fileInformationExtractor">Вытаскиватель данных о файлах.</param> /// <param name="indexedCache">Кэш данных по индексам.</param> /// <param name="fileSearcher">Поисковик имен всех файлов в источников.</param> public SimpleIndexingService( ISourceValidator sourceValidator, ISourceStorage sourceStorage, IIndexChecker indexChecker, IFileInformationExtractor fileInformationExtractor, IIndexedCache indexedCache, IFileSearcher fileSearcher) { this.sourceValidator = sourceValidator; this.sourceStorage = sourceStorage; this.indexChecker = indexChecker; this.fileInformationExtractor = fileInformationExtractor; this.indexedCache = indexedCache; this.fileSearcher = fileSearcher; }
/// <summary> /// Конструктор класса. /// </summary> /// <param name="cache">Кэш данных по индексам.</param> public SafetyIndexedCache(IIndexedCache cache) { this.cache = cache; this.indexesSyncObjects = new ConcurrentDictionary<Index, object>(); }
/// <summary>Move indices forward in preparation for insert.</summary> /// <param name="cache">Cache to modify.</param> /// <param name="index">Descendant index.</param> private static void ShiftForInsert(IIndexedCache<Builder> cache, int index) { var values = cache.ToList(); foreach (var builder in values.Where(v => v.Key >= index).Select(value => value.Value)) { builder.Index++; } cache.Clear(); foreach (var value in values) { cache[value.Value.Index] = value.Value; } }