/// <summary> /// Deserializes a message and emit it to serviceEvents /// </summary> /// <param name="message">The message listened</param> /// <param name="topic">The topic in which the message was listened</param> void ManageListenedMessages(byte[] message, NotNullOrWhiteSpaceString topic) { BaseEvent @event = null; try { @event = _serializer.Deserialize<BaseEvent>(message); if(@event.IsValid()) { var incommingEvent = new IncommingEvent { @event = @event, RawData = message }; _serviceEvents.AddIncommingEvent(incommingEvent); } else { var receivedInvalidMessage = new ReceivedInvalidMessage { EventID = @event.EventID, MessageType = @event.MessageType, Topic = @event.Topic, InvalidReason = @event.InvalidReason.Value }; _serviceEvents.AddReceivedInvalidMessageEvent(receivedInvalidMessage); } } catch { var receivedInvalidMessage = new ReceivedInvalidMessage { InvalidReason = EInvalidMessageReason.Undeserializable, Topic = topic }; _serviceEvents.AddReceivedInvalidMessageEvent(receivedInvalidMessage); } }
public void ReceivedInvalidMessageEventSequence() { var sut = new ServiceEvents(); var callbackCalled = false; var message = new ReceivedInvalidMessage { EventID = Guid.NewGuid(), MessageHandler = StringExtension.RandomString(), MessageType = StringExtension.RandomString(), Topic = StringExtension.RandomString() }; sut.ReceivedInvalidMessageEventSequence.Subscribe(i => { Assert.Same(i, message); callbackCalled = true; }); sut.AddReceivedInvalidMessageEvent(message); Assert.True(callbackCalled); }