예제 #1
0
        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);
        }
예제 #2
0
 public ProjectionController(ShardName shardName, IProjectionUpdater updater, AsyncOptions options)
 {
     _shardName = shardName;
     _updater   = updater;
     _options   = options ?? new AsyncOptions();
 }