public void should_not_dispatch_message_multiple_times_if_same_handler_is_registered_multiple_times() { // Arrange var testHandler = new TestHandler <TestMessage>(); var dispatcher = new MessageDispatcher(); dispatcher.AddHandler <TestMessage>(testHandler); dispatcher.AddHandler <TestMessage>(testHandler); dispatcher.AddHandler <TestMessage>(testHandler); // Act dispatcher.Dispatch(0, new TestMessage(42)); // Assert Assert.AreEqual(1, testHandler.HandledMessages.Count); }
public void should_unsubscribe_from_a_specific_handler() { // Arrange var testHandler1 = new TestHandler <TestMessage>(); var testHandler2 = new TestHandler <TestMessage>(); var dispatcher = new MessageDispatcher(); dispatcher.AddHandler <TestMessage>(testHandler1); dispatcher.AddHandler <TestMessage>(testHandler2).Dispose(); // Act dispatcher.Dispatch(0, new TestMessage(42)); dispatcher.Dispatch(0, new TestMessage(43)); // Assert Assert.AreEqual(2, testHandler1.HandledMessages.Count); Assert.AreEqual(0, testHandler2.HandledMessages.Count); }
public void should_dispatch_to_multiple_handler() { // Arrange var testHandler1 = new TestHandler <TestMessage>(); var testHandler2 = new TestHandler <TestMessage>(); var dispatcher = new MessageDispatcher(); dispatcher.AddHandler <TestMessage>(testHandler1); dispatcher.AddHandler <TestMessage>(testHandler2); // Act dispatcher.Dispatch(0, new TestMessage(42)); // Assert var handledMessage1 = testHandler1.HandledMessages.Single(); Assert.AreEqual(42, handledMessage1.Value); var handledMessage2 = testHandler2.HandledMessages.Single(); Assert.AreEqual(42, handledMessage2.Value); }
public void should_not_dispatch_messages_if_the_subscription_doesnt_match() { // Arrange var testHandler = new TestHandler <TestMessage>(); var dispatcher = new MessageDispatcher(); dispatcher.AddHandler <TestMessage>(testHandler); // Act dispatcher.Dispatch(0, new OtherTestMessage(42)); // Assert Assert.AreEqual(0, testHandler.HandledMessages.Count); }
public void should_not_dispatch_message_after_unsubscription() { // Arrange var testHandler = new TestHandler <TestMessage>(); var dispatcher = new MessageDispatcher(); dispatcher.AddHandler <TestMessage>(testHandler).Dispose(); // Act dispatcher.Dispatch(0, new TestMessage(42)); // Assert Assert.AreEqual(0, testHandler.HandledMessages.Count); }
public void should_dispatch_message_to_handler() { // Arrange var testHandler = new TestHandler <TestMessage>(); var dispatcher = new MessageDispatcher(); dispatcher.AddHandler <TestMessage>(testHandler); // Act dispatcher.Dispatch(0, new TestMessage(42)); // Assert var handledMessage = testHandler.HandledMessages.Single(); Assert.AreEqual(42, handledMessage.Value); }
public MainWindow() { InitializeComponent(); DataContext = this; MsgDispatcher = MessageDispatcher.GetInstance(); MsgDispatcher.AddHandler(MessageHandler); statusService = StatusService.GetInstance(); updateService = UpdateService.GetInstance(); logger = LogService.GetLogger(); Status = statusService.GetStatus(); }
public void should_dispatch_multiple_messages_to_handler() { // Arrange var testHandler = new TestHandler <TestMessage>(); var dispatcher = new MessageDispatcher(); dispatcher.AddHandler <TestMessage>(testHandler); // Act dispatcher.Dispatch(0, new TestMessage(42)); dispatcher.Dispatch(0, new TestMessage(43)); // Assert Assert.AreEqual(2, testHandler.HandledMessages.Count); Assert.AreEqual(42, testHandler.HandledMessages[0].Value); Assert.AreEqual(43, testHandler.HandledMessages[1].Value); }
/// <summary> /// /// </summary> /// <param name="member"></param> public void AddTaxCollectorListener(GuildMember member) { foreach (var taxCollector in m_taxCollectors) { taxCollector.AddMessage(() => { if (taxCollector.HasGameAction(Action.GameActionTypeEnum.FIGHT)) { var fight = taxCollector.Fight as TaxCollectorFight; if (fight.State == FightStateEnum.STATE_PLACEMENT) { member.Dispatch(WorldMessage.GUILD_TAXCOLLECTOR_ATTACKER_JOIN(taxCollector.Id, fight.Team0.Fighters.ToArray())); if (taxCollector.Defenders.Count > 0) { member.Dispatch(WorldMessage.GUILD_TAXCOLLECTOR_DEFENDER_JOIN(taxCollector.Id, taxCollector.Defenders.ToArray())); } } } }); } m_taxCollectorDispatcher.AddHandler(member.Dispatch); }
public IDisposable Subscribe <T>(IMessageHandler handler) { return(_messageDispatcher.AddHandler <T>(handler)); }