示例#1
0
        public bool CompositionRoute()
        {
            lock (_thisLock)
            {
                try
                {
                    //NOTE: Set up message bus banks
                    _messageBusBankRouters  = _erector.Container.Resolve <IMessageBusBank <string> >();
                    _messageBusBankServices = _erector.Container.Resolve <IMessageBusBank <string> >();

                    //**** Set up Network A ****/
                    //NOTE: Set up router A
                    IRoutingService <string> routingServiceA = _erector.Container.Resolve <IRoutingService <string> >();
                    ISkyWatch skyWatchA = _erector.Container.Resolve <ISkyWatch>();

                    //NOTE: Set up the ModifyChatMessageService A
                    IModifyChatMessageService modifyChatMessageServiceA = _erector.Container.Resolve <IModifyChatMessageService>();
                    ServiceFarmServiceCompositionRoute(modifyChatMessageServiceA, routingServiceA, ChatServiceNames.ModifyChatMessageService);
                    ChatMessageServiceCompositionRoute(modifyChatMessageServiceA, routingServiceA, skyWatchA);

                    //NOTE: Set up the GetNextChatMessageService A
                    IGetNextChatMessageService getNextChatMessageServiceA = _erector.Container.Resolve <IGetNextChatMessageService>();
                    ServiceFarmServiceCompositionRoute(getNextChatMessageServiceA, routingServiceA, ChatServiceNames.GetNextChatMessageService);
                    ChatMessageServiceCompositionRoute(getNextChatMessageServiceA, routingServiceA, skyWatchA);

                    //NOTE: Set up the GetLatestChatMessageService A
                    IGetLatestChatMessageService getLatestChatMessageServiceA = _erector.Container.Resolve <IGetLatestChatMessageService>();
                    ServiceFarmServiceCompositionRoute(getLatestChatMessageServiceA, routingServiceA, ChatServiceNames.GetLatestChatMessageService);
                    ChatMessageServiceCompositionRoute(getLatestChatMessageServiceA, routingServiceA, skyWatchA);


                    return(true);
                }
                catch (Exception ex)
                {
                    _log.Error(String.Format("CompositionRoute() - Exception: \n{0}\n{1} \n\n InnerException: \n{2}\n{3}\n\n", ex.Message, ex.StackTrace, ex.InnerException.Message, ex.InnerException.StackTrace));
                    throw new ApplicationException(ex.Message, ex);
                }
            }
        }
示例#2
0
        public void ChatMessageServiceCompositionRoute(IChatMessageService chatMessageService, IRoutingService <string> routingService, ISkyWatch skyWatch)
        {
            ITack tackModifyChatMessageServiceA = _erector.Container.Resolve <ITack>();

            tackModifyChatMessageServiceA.SkyWatch = skyWatch;
            chatMessageService.Tack = tackModifyChatMessageServiceA;
        }
示例#3
0
        public void RoutingServiceCompositionRoute(IRoutingService <string> routingService, ISkyWatch skyWatch)
        {
            IMessageBus <string> messageBus = _erector.Container.Resolve <IMessageBus <string> >();

            messageBus.JsonSchema =
                (message) =>
            {
                IEnvelope envelope    = _marshaller.UnMarshall <IEnvelope>(message);
                string    serviceName = envelope.ServiceRoute.Split('.')[1];
                if (serviceName == ChatServiceNames.ModifyChatMessageService || serviceName == ChatServiceNames.GetNextChatMessageService)
                {
                    return(_erector.Container.Resolve <IChatMessageEnvelope>().GetMyJSONSchema());
                }
                else
                {
                    return(String.Empty);
                }
            };

            IMessageBusReaderBank <string> messageBusReaderBank = _erector.Container.Resolve <IMessageBusReaderBank <string> >();

            messageBusReaderBank.SpecifyTheMessageBus(messageBus);

            IRoutingTable <string> routingTable = _erector.Container.Resolve <IRoutingTable <string> >();

            routingTable.MessageBusBank = _messageBusBankRouters;

            routingService.RoutingTable         = routingTable;
            routingService.MessageBusReaderBank = messageBusReaderBank;
            //NOTE: Set up two readers
            routingService.InitializeReaders(2);

            _messageBusBankRouters.RegisterMessageBus(routingService.RoutingServiceGUID, messageBus);
            _serviceList.Add(routingService);
        }