Esempio n. 1
0
            protected void VerifyPhases(IAsyncPipelineBuilder<int> builder, Func<List<Func<IServiceProvider, int, CancellationToken, Task<int>>>, bool> verification)
            {
                // Workaround for exposing an internal type
                if (!(builder is AsyncPipelineBuilder<int> asyncBuilder))
                    throw new Exception($"Builder must be of type {nameof(AsyncPipelineBuilder<int>)}");

                verification(asyncBuilder.Build()).Should().BeTrue();
            }
Esempio n. 2
0
 public static IAsyncPipelineBuilder <TContext> Use <TContext>(this IAsyncPipelineBuilder <TContext> builder, Func <TContext, Func <Task>, Task> func)
 {
     return(builder.Use(next =>
                        context =>
     {
         return func(context, () => next(context));
     }));
 }
Esempio n. 3
0
        public static IAsyncPipelineBuilder <TContext> When <TContext>(this IAsyncPipelineBuilder <TContext> builder, Func <TContext, bool> predict, Action <IAsyncPipelineBuilder <TContext> > configureAction)
        {
            builder.Use((context, next) =>
            {
                if (predict.Invoke(context))
                {
                    var branchPipelineBuilder = builder.New();
                    configureAction(branchPipelineBuilder);
                    var branchPipeline = branchPipelineBuilder.Build();
                    return(branchPipeline.Invoke(context));
                }

                return(next());
            });

            return(builder);
        }
Esempio n. 4
0
 public static IAsyncPipelineBuilder <TContext> Run <TContext>(this IAsyncPipelineBuilder <TContext> builder, Func <TContext, Task> handler)
 {
     return(builder.Use(_ => handler));
 }
 public IAsyncPipelineBuilder Add(IAsyncPipelineBuilder asyncPipeline)
 {
     _asyncPipelineBuilderCollection.Add(asyncPipeline);
     return(asyncPipeline);
 }