protected override object PreProcess(object message, out object data) { const string method = "PreProcess"; Debug.Assert(_messageHandler != null, "_messageHandler != null"); if (message == null) { throw new NullParameterException(GetType(), method, "message"); } // The message should be a Stream containing an EventMessage - deserialize it. var stream = message as Stream; if (stream == null) { throw new InvalidParameterTypeException(GetType(), method, "message", typeof(Stream), message); } var eventMessage = new EventMessage(); eventMessage.Read(new BinaryReader(stream)); // Send it to the message handler. _messageHandler.HandleEventMessage(eventMessage); data = null; return(message); }
private static int GetEventMessages(EventMessages eventMessages, System.Messaging.Message message) { Debug.Assert(message != null, "message != null"); var reader = new BinaryReader(message.BodyStream); switch (message.Label) { case Constants.MessageComponents.Msmq.MessageLabel: // A single message. var newEventMessage = new EventMessage(); newEventMessage.Read(reader); eventMessages.Add(newEventMessage); return(1); case Constants.MessageComponents.Msmq.MessagesLabel: // Multiple messages. var newEventMessages = new EventMessages(); newEventMessages.Read(reader); foreach (EventMessage eventMessage in newEventMessages) { eventMessages.Add(eventMessage); } return(newEventMessages.Count); default: Debug.WriteLine("Unexpected MSMQ message label '" + message.Label + "' - not recognised as a LinkMe Instrumentation message."); return(0); } }