public ITargetBlock <EventRange> Start(IProjectionUpdater updater, ILogger <IProjection> logger, CancellationToken token) { _token = token; _updater = updater; _logger = logger; var singleFileOptions = new ExecutionDataflowBlockOptions { EnsureOrdered = true, MaxDegreeOfParallelism = 1, CancellationToken = token }; _slicing = new TransformBlock <EventRange, T>(x => groupEventRange(x), singleFileOptions); _building = new ActionBlock <T>(processRange, singleFileOptions); _slicing.LinkTo(_building); return(_slicing); }
public ProjectionController(ShardName shardName, IProjectionUpdater updater, AsyncOptions options) { _shardName = shardName; _updater = updater; _options = options ?? new AsyncOptions(); }