Example #1
0
        public void Consume(IReceivedMessageTraceList list)
        {
            if (_unsubscribe != null)
            {
                _unsubscribe();
            }
            _unsubscribe = null;

            ITextBlock text = new TextBlock()
                              .BeginBlock("Trace URI: " + _uriString,
                                          string.Format("{0} message{1}", list.Messages.Count, list.Messages.Count == 1 ? "" : "s"))
                              .Break();

            foreach (IReceivedMessageTraceDetail message in list.Messages)
            {
                text.BeginBlock("Received: " + message.Id, Format(message.StartTime));

                text.Table(GetMessageHeaderDictionary(message),
                           "Duration (ms)", ((int)message.Duration.TotalMilliseconds).ToString("N0"));

                text.Break();

                if (message.Receivers != null)
                {
                    foreach (IReceiverTraceDetail receiver in message.Receivers)
                    {
                        text.BeginBlock(receiver.ReceiverType, Format(receiver.StartTime));
                        text.Table(GetReceiverDictionary(receiver));
                        text.EndBlock();
                    }
                }

                if (message.SentMessages != null)
                {
                    foreach (ISentMessageTraceDetail sent in message.SentMessages)
                    {
                        text.BeginBlock("Sent: " + sent.Id, Format(sent.StartTime));

                        text.Table(GetMessageHeaderDictionary(sent),
                                   "Endpoint Address", sent.Address.ToString());
                        text.EndBlock();
                    }
                }

                text.EndBlock();
            }

            _log.Info(text.ToString());
            _complete.Set();
        }