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); }
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(); }
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(); }