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); } } }
public void ChatMessageServiceCompositionRoute(IChatMessageService chatMessageService, IRoutingService <string> routingService, ISkyWatch skyWatch) { ITack tackModifyChatMessageServiceA = _erector.Container.Resolve <ITack>(); tackModifyChatMessageServiceA.SkyWatch = skyWatch; chatMessageService.Tack = tackModifyChatMessageServiceA; }
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); }