Example #1
0
        private PipelineExecutionResult FillExecutionResult(Task pipelineCompletion, PipelineExecutionResult executionResult)
        {
            executionResult.FinishTs = DateTime.UtcNow;

            if (pipelineCompletion.IsFaulted)
            {
                executionResult.Faulted   = true;
                executionResult.Exception = pipelineCompletion.Exception;
            }
            else if (pipelineCompletion.IsCanceled)
            {
                executionResult.Canceled = true;
            }

            return(executionResult);
        }
Example #2
0
        public async Task <PipelineExecutionResult> Execute <TData>(StartableBlock <TData> pipeline)
        {
            var pipelineExecutionResult = new PipelineExecutionResult();

            // Ignore pipeline output
            pipeline.Output.IgnoreOutput();

            // Handle completion
            var completionHandler = pipeline.Completion.ContinueWith(
                (completion, executionResult) => FillExecutionResult(completion, (PipelineExecutionResult)executionResult),
                pipelineExecutionResult);

            // Execute
            pipelineExecutionResult.StartTs = DateTime.UtcNow;
            pipeline.Start();

            return(await completionHandler);
        }