コード例 #1
0
        public bool Inspect <T, TMessage>(RequestMessageRouter <T, TMessage> router)
            where T : class, IConsumeContext <TMessage>
            where TMessage : class
        {
            Append(string.Format("Routed Request {0}", GetMessageName <TMessage>()));

            return(true);
        }
        public bool Inspect <T, TM>(RequestMessageRouter <T, TM> router)
            where T : class, IMessageContext <TM>
            where TM : class
        {
            if (typeof(T) == typeof(IConsumeContext <TMessage>) && typeof(TM) == typeof(TMessage))
            {
                Router = router.TranslateTo <RequestMessageRouter <IConsumeContext <TMessage>, TMessage> >();

                return(false);
            }

            return(true);
        }
        static RequestMessageRouter <IConsumeContext <TMessage>, TMessage> ConfigureRouter <TMessage>(
            MessageRouter <IConsumeContext <TMessage> > inputRouter)
            where TMessage : class
        {
            if (inputRouter == null)
            {
                throw new PipelineException("The input router was not found");
            }

            var outputRouter = new RequestMessageRouter <IConsumeContext <TMessage>, TMessage>(x => x.RequestId);

            inputRouter.Connect(outputRouter);

            return(outputRouter);
        }
コード例 #4
0
        public UnsubscribeAction Connect(IInboundPipelineConfigurator configurator, string requestId,
                                         HandlerSelector <TMessage> handler)
        {
            if (handler == null)
            {
                throw new ArgumentNullException("handler", "The handler cannot be null.");
            }

            var correlatedConfigurator = new InboundRequestMessageRouterConfigurator(configurator.Pipeline);

            RequestMessageRouter <IConsumeContext <TMessage>, TMessage> router =
                correlatedConfigurator.FindOrCreate <TMessage>();

            var sink = new InstanceMessageSink <TMessage>(MultipleHandlerSelector.ForHandler(handler));

            UnsubscribeAction result = router.Connect(requestId, sink);

            return(() => result() && (router.SinkCount(requestId) == 0)); // && remove();
        }
コード例 #5
0
        public UnsubscribeAction Connect(IInboundPipelineConfigurator configurator, string requestId, HandlerSelector <TMessage> handler)
        {
            if (handler == null)
            {
                throw new NullReferenceException("The handler cannot be null.");
            }

            var correlatedConfigurator = new InboundRequestMessageRouterConfigurator(configurator.Pipeline);

            RequestMessageRouter <IConsumeContext <TMessage>, TMessage> router =
                correlatedConfigurator.FindOrCreate <TMessage>();

            var sink = new InstanceMessageSink <TMessage>(MultipleHandlerSelector.ForHandler(handler));

            UnsubscribeAction result = router.Connect(requestId, sink);

            // TODO this should NOT publish a correlated subscription, in fact, do we even need to subscribe?
            //UnsubscribeAction remove = configurator.SubscribedTo<TMessage>();

            return(() => result() && (router.SinkCount(requestId) == 0));// && remove();
        }