public UnsubscribeAction Connect <TMessage>(IMessagePipeline pipeline, IPipelineSink <TMessage> sink)
            where TMessage : class
        {
            MessageRouterConfigurator routerConfigurator = For(pipeline);

            return(routerConfigurator.FindOrCreate <TMessage>().Connect(sink));
        }
Example #2
0
        public static UnsubscribeAction ConnectToRouter <T>(this IMessagePipeline pipeline, IPipelineSink <T> sink)
            where T : class
        {
            MessageRouterConfigurator routerConfigurator = MessageRouterConfigurator.For(pipeline);

            MessageRouter <T> router = routerConfigurator.FindOrCreate <T>();

            UnsubscribeAction result = router.Connect(sink);

            return(() => result() && (router.SinkCount == 0));
        }
Example #3
0
        public CorrelatedMessageRouter <TMessage, TKey> FindOrCreate <TMessage, TKey>()
            where TMessage : class, CorrelatedBy <TKey>
        {
            MessageRouterConfigurator configurator = MessageRouterConfigurator.For(_sink);

            MessageRouter <TMessage> router = configurator.FindOrCreate <TMessage>();

            var scope = new CorrelatedMessageRouterConfiguratorScope <TMessage, TKey>();

            router.Inspect(scope);

            return(scope.Router ?? ConfigureRouter <TMessage, TKey>(router));
        }
        private static void EnsureRouterExists <TMessage>(IPipelineSink <object> sink) where TMessage : class
        {
            MessageRouterConfigurator routerConfigurator = MessageRouterConfigurator.For(sink);

            routerConfigurator.FindOrCreate <TMessage>();
        }