Пример #1
0
        public static IPipe <CompensateActivityContext <TActivity, TLog> > Build <TActivity, TLog>(
            this IEnumerable <IPipeSpecification <CompensateActivityContext <TActivity, TLog> > > pipeSpecifications,
            IFilter <CompensateActivityContext <TActivity, TLog> > consumeFilter)
            where TActivity : class, CompensateActivity <TLog>
            where TLog : class
        {
            var builder = new CompensateActivityPipeBuilder <TActivity, TLog>();

            foreach (IPipeSpecification <CompensateActivityContext <TActivity, TLog> > specification in pipeSpecifications)
            {
                specification.Apply(builder);
            }

            CompensateActivityPipeBuilder <TActivity, TLog> builders = builder;

            if (builders == null)
            {
                throw new InvalidOperationException("Should not be null, ever");
            }

            return(Pipe.New <CompensateActivityContext <TActivity, TLog> >(x =>
            {
                foreach (IFilter <CompensateActivityContext <TActivity, TLog> > filter in builders.Filters)
                {
                    x.UseFilter(filter);
                }

                x.UseFilter(consumeFilter);
            }));
        }
Пример #2
0
        public static IPipe <RequestContext> Build <TActivity, TLog>(
            this IEnumerable <IPipeSpecification <CompensateActivityContext <TActivity, TLog> > > pipeSpecifications,
            IFilter <RequestContext <CompensateActivityContext <TActivity, TLog> > > consumeFilter)
            where TActivity : class, CompensateActivity <TLog>
            where TLog : class
        {
            var builder = new CompensateActivityPipeBuilder <TActivity, TLog>();

            foreach (IPipeSpecification <CompensateActivityContext <TActivity, TLog> > specification in pipeSpecifications)
            {
                specification.Apply(builder);
            }

            CompensateActivityPipeBuilder <TActivity, TLog> builders = builder;

            if (builders == null)
            {
                throw new InvalidOperationException("Should not be null, ever");
            }

            return(Pipe.New <RequestContext>(cfg =>
            {
                cfg.UseDispatch(new RequestConverterFactory(), d =>
                {
                    d.Handle <CompensateActivityContext <TActivity, TLog> >(h =>
                    {
                        AddFilters(builders, h);

                        h.UseFilter(consumeFilter);
                    });
                });
            }));
        }
Пример #3
0
        static void AddFilters <TActivity, TLog>(CompensateActivityPipeBuilder <TActivity, TLog> builders,
                                                 IPipeConfigurator <RequestContext <CompensateActivityContext <TActivity, TLog> > > h)
            where TActivity : class, CompensateActivity <TLog>
            where TLog : class
        {
            foreach (IFilter <CompensateActivityContext <TActivity, TLog> > filter in builders.Filters)
            {
                var filterSpecification = new FilterPipeSpecification <CompensateActivityContext <TActivity, TLog> >(filter);

                var pipeSpecification = new SplitFilterPipeSpecification
                                        <RequestContext <CompensateActivityContext <TActivity, TLog> >, CompensateActivityContext <TActivity, TLog> >(
                    filterSpecification, (input, context) => input, context => context.Request);

                h.AddPipeSpecification(pipeSpecification);
            }
        }