public void When_Subscribe_Two_Handler_After_Add_A_Rule_Should_Handlers_Execute() { var messagebus = new UniRxMessageBus(); // Define some const const string firstHandlerName = "handler First"; const string secondHandlerName = "handler Second"; const string firstMessageString = firstHandlerName + "_Message"; // Create Messages var firstMessage = new SomeMessage(firstMessageString, string.Empty, DateTime.UtcNow); // Create Handlers var firstHandler = new SomeMessageHandler(firstHandlerName); var secondHandler = new SomeMessageHandler(secondHandlerName); // Add Rules messagebus.AddRule(MessageRouteRule.Create <SomeMessage, SomeMessageHandler>(firstHandlerName + "_Rule", false, null, null, null)); // Subscribe handlers messagebus.Subscribe <SomeMessageHandler, SomeMessage>(firstHandler, new MessageHandlerActionExecutor <SomeMessage>(msg => firstHandler.Handle(msg))); messagebus.Subscribe <SomeMessageHandler, SomeMessage>(secondHandler, new MessageHandlerActionExecutor <SomeMessage>(msg => secondHandler.Handle(msg))); // Raise events messagebus.RaiseEvent(firstMessage); // Assertions Assert.AreEqual(1, firstHandler.HandleCallCount, CreateAssetMessage(firstHandler, 0)); Assert.AreEqual(1, secondHandler.HandleCallCount, CreateAssetMessage(secondHandler, 1)); }
public void AddRule(MessageRouteRule rule) { Rules.Add(rule); var items = _subscribedHandlerWithoutRule.Where(item => item.HandlerType == rule.HandlerType && item.MessageType == rule.MessageType) .ToList(); if (items.Count <= 0) { return; } for (var i = items.Count - 1; i >= 0; --i) { var item = items[i]; dynamic objHandler; var targetAvaliable = item.Handler.TryGetTarget(out objHandler); if (!targetAvaliable) { continue; } Subscribe(objHandler, item.MessageType, item.HandlerMethodSelector); items.Remove(item); } }
public void When_Subscribe_Before_Add_Rule_Should_Handler_Execute() { var messagebus = new UniRxMessageBus(); var handler = new SomeMessageHandler(string.Empty); messagebus.Subscribe <SomeMessageHandler, SomeMessage>(handler, new MessageHandlerActionExecutor <SomeMessage>(msg => handler.Handle(msg))); messagebus.AddRule(MessageRouteRule.Create <SomeMessage, SomeMessageHandler>(string.Empty, false)); var message = new SomeMessage("First message", string.Empty, DateTime.UtcNow); messagebus.RaiseEvent(message); Assert.AreEqual(1, handler.HandleCallCount); }
public IEnumerable <SubscriptionRegisteryItem> GetRuleSubscriptions(MessageRouteRule rule) { return(this.Where(item => item.Route == rule)); }
public IEnumerable <SubscriptionRegisteryItem> ItemsByRule(MessageRouteRule routeRule) { return(this.Where(item => item.Route == routeRule)); }
public bool ContainsRule(MessageRouteRule routeRule) { return(this.Any(item => item.Route == routeRule)); }
private void InitializeEvents() { _messageBus.AddRule(MessageRouteRule.Create <OnGameOvered, UIGameOverPanel>(string.Empty, false)); _messageBus.Subscribe <UIGameOverPanel, OnGameOvered>(this, new MessageHandlerActionExecutor <OnGameOvered>(Handle)); }