Пример #1
0
        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);
        }
Пример #2
0
        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);
            }
        }