public ObjectsProcessedResult IndexData(IEnumerable <object> data, Func <object, string> indexNameBuilder, string typeName) { var objectCount = 0; var result = new ObjectsProcessedResult(); var watch = new Stopwatch(); watch.Start(); _logger.Info($"Started to index data"); foreach (var @object in data) { var indexName = indexNameBuilder(@object); var chunk = GetChunkByIndexName(indexName, typeName); chunk.Add(@object); var processChunkResult = ProcessChunk(chunk); result.Add(processChunkResult); ++objectCount; } ProcessPendingChunks(result); watch.Stop(); _logger.Info($"Index data ended - Total: {objectCount} Indexed: {result.ObjectsProcessed} Not Indexed: {result.ObjectsNotProcessed} Took: {watch.Elapsed.ToString("g")}"); return(result); }
private void ProcessPendingChunks(ObjectsProcessedResult result) { foreach (var chunk in _chunks) { var processChunkResult = _chunkProcessor.ProcessChunk(chunk); result.Add(processChunkResult); } _chunks.Clear(); }