예제 #1
0
 /// <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);
     }
 }
예제 #2
0
 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);
 }