Example #1
0
        public Task <BucketContainer> ProcessEventsAsync(IEventReader reader, bool enablePayloads)
        {
            var progressManager = new MultiOperationsProgressManager(_progressHandler);

            IProgress <int> operationProgress = progressManager.AddOperation();
            var             readingTask       = reader.StartReadingEvents(
                enablePayloads,
                operationProgress
                );

            operationProgress = progressManager.AddOperation();
            var processTask = StartProcessingEventsWithPipeline(
                reader,
                operationProgress
                );

            return(Task.WhenAll(readingTask, processTask)
                   .ContinueWith(
                       task => {
                if (task.IsFaulted)
                {
                    var tcs = new TaskCompletionSource <BucketContainer>();
                    tcs.SetException(task.Exception);
                    return tcs.Task;
                }
                return processTask;
            }
                       ).Unwrap());
        }