public override VisualTransaction[] GetTransactions(IPSession session) { List<VisualTransaction> messages = new List<VisualTransaction>(); char[] bodyTrimChars = new char[] { '\r', '\n' }; foreach (TransactionNode node in session.Nodes) { if (node.Name == "MSNSBCommand") { IPPacket pkt = node.Slices[0].Packet; VisualTransaction vt = new VisualTransaction(node.Index, pkt.Direction, pkt.Timestamp); string headline = (string) node["Command"]; if (node.Fields.ContainsKey("Arguments")) headline += " " + (string) node["Arguments"]; vt.HeadlineText = headline; XmlHighlighter highlighter = null; TransactionNode payloadNode = node.FindChild("Payload", false); if (payloadNode != null) { string body = ""; if (payloadNode.Fields.ContainsKey("XML")) { highlighter = new XmlHighlighter(XmlHighlightColorScheme.VisualizationScheme); XmlUtils.PrettyPrint((string)payloadNode["XML"], out body, highlighter); } else if (payloadNode.Fields.ContainsKey("Text")) { body = (string)payloadNode["Text"]; } else if (payloadNode.Fields.ContainsKey("MSNSLP")) { body = (string)payloadNode["MSNSLP"]; } else if (payloadNode.FindChild("Headers") != null) { TransactionNode headersNode = payloadNode.FindChild("Headers"); vt.HeaderRowsPerCol = Int32.MaxValue; foreach (string name in headersNode.Fields.Keys) { vt.AddHeaderField(name, headersNode.Fields[name].ToString()); } TransactionNode bodyNode = payloadNode.FindChild("Body"); if (bodyNode != null) { body = bodyNode.Fields[bodyNode.FieldNames[0]].ToString(); body = body.TrimEnd(bodyTrimChars); } } else { body = String.Format("Unhandled payload format: {0}", (payloadNode.FieldNames.Count > 0) ? payloadNode.FieldNames[0] : payloadNode.Children[0].Name); } vt.BodyText = body; if (highlighter != null) highlighter.HighlightRichTextBox(vt.BodyBox); } messages.Add(vt); } } return messages.ToArray(); }
public override VisualTransaction[] GetTransactions(IPSession session) { List <VisualTransaction> messages = new List <VisualTransaction>(); char[] bodyTrimChars = new char[] { '\r', '\n' }; foreach (TransactionNode node in session.Nodes) { if (node.Name == "MSNSBCommand") { IPPacket pkt = node.Slices[0].Packet; VisualTransaction vt = new VisualTransaction(node.Index, pkt.Direction, pkt.Timestamp); string headline = (string)node["Command"]; if (node.Fields.ContainsKey("Arguments")) { headline += " " + (string)node["Arguments"]; } vt.HeadlineText = headline; XmlHighlighter highlighter = null; TransactionNode payloadNode = node.FindChild("Payload", false); if (payloadNode != null) { string body = ""; if (payloadNode.Fields.ContainsKey("XML")) { highlighter = new XmlHighlighter(XmlHighlightColorScheme.VisualizationScheme); XmlUtils.PrettyPrint((string)payloadNode["XML"], out body, highlighter); } else if (payloadNode.Fields.ContainsKey("Text")) { body = (string)payloadNode["Text"]; } else if (payloadNode.Fields.ContainsKey("MSNSLP")) { body = (string)payloadNode["MSNSLP"]; } else if (payloadNode.FindChild("Headers") != null) { TransactionNode headersNode = payloadNode.FindChild("Headers"); vt.HeaderRowsPerCol = Int32.MaxValue; foreach (string name in headersNode.Fields.Keys) { vt.AddHeaderField(name, headersNode.Fields[name].ToString()); } TransactionNode bodyNode = payloadNode.FindChild("Body"); if (bodyNode != null) { body = bodyNode.Fields[bodyNode.FieldNames[0]].ToString(); body = body.TrimEnd(bodyTrimChars); } } else { body = String.Format("Unhandled payload format: {0}", (payloadNode.FieldNames.Count > 0) ? payloadNode.FieldNames[0] : payloadNode.Children[0].Name); } vt.BodyText = body; if (highlighter != null) { highlighter.HighlightRichTextBox(vt.BodyBox); } } messages.Add(vt); } } return(messages.ToArray()); }