diff --git a/OpenMetaverse/PacketDecoder.cs b/OpenMetaverse/PacketDecoder.cs
index 85a1649e..dccbc138 100644
--- a/OpenMetaverse/PacketDecoder.cs
+++ b/OpenMetaverse/PacketDecoder.cs
@@ -1470,7 +1470,7 @@ namespace OpenMetaverse.Packets
{
var p = propertyInfo.GetValue(nestedArrayRecord, null);
string s = Utils.BytesToString((byte[])p);
-
+ /* Leave the c for now at the end, it signifies something useful that still needs to be done */
result.AppendFormat("{0, 30}: {1,-40} [{2}]c" + Environment.NewLine,
propertyInfo.Name,
Utils.BytesToString((byte[])propertyInfo.GetValue(nestedArrayRecord, null)),
diff --git a/Programs/WinGridProxy/FormWinGridProxy.cs b/Programs/WinGridProxy/FormWinGridProxy.cs
index 4b4ef9cc..dac3541f 100644
--- a/Programs/WinGridProxy/FormWinGridProxy.cs
+++ b/Programs/WinGridProxy/FormWinGridProxy.cs
@@ -968,28 +968,41 @@ namespace WinGridProxy
///
/// The IMessage object
/// A formatted string containing the names and values of the source object
- public static string IMessageToString(object message)
+ public static string IMessageToString(object message, int recurseLevel)
{
if (message == null)
return String.Empty;
StringBuilder result = new StringBuilder();
// common/custom types
- result.AppendFormat("Message Type {0}" + System.Environment.NewLine, message.GetType().Name);
+ if (recurseLevel <= 0)
+ {
+ result.AppendFormat("Message Type: {0}" + System.Environment.NewLine, message.GetType().Name);
+ }
+ else
+ {
+ string pad = " +--".PadLeft(recurseLevel + 3);
+ result.AppendFormat("{0} {1}" + System.Environment.NewLine, pad, message.GetType().Name);
+ }
+
+ recurseLevel++;
foreach (FieldInfo messageField in message.GetType().GetFields())
{
// an abstract message class
if (messageField.FieldType.IsAbstract)
{
- result.AppendLine(IMessageToString(messageField.GetValue(message)));
+ result.AppendLine(IMessageToString(messageField.GetValue(message), recurseLevel));
}
// a byte array
else if (messageField.GetValue(message) != null && messageField.GetValue(message).GetType() == typeof(Byte[]))
{
- result.AppendFormat("{0, 30}: ({1})" + System.Environment.NewLine,
- messageField.Name, messageField.FieldType.Name);
- result.AppendFormat("{0}" + System.Environment.NewLine, Utils.BytesToHexString((byte[])messageField.GetValue(message), string.Format("{0,30}", "")));
+ result.AppendFormat("{0, 30}:" + System.Environment.NewLine,
+ messageField.Name);
+
+ result.AppendFormat("{0}" + System.Environment.NewLine,
+ Utils.BytesToHexString((byte[])messageField.GetValue(message),
+ string.Format("{0,30}", "")));
}
// an array of class objects
@@ -999,26 +1012,26 @@ namespace WinGridProxy
result.AppendFormat("-- {0} --" + System.Environment.NewLine, messageField.FieldType.Name);
foreach (object nestedArrayObject in messageObjectData as Array)
{
- result.AppendFormat(" [{0}]" + System.Environment.NewLine, nestedArrayObject.GetType().Name);
+ result.AppendFormat("{0,30}" + System.Environment.NewLine, "-- " + nestedArrayObject.GetType().Name + " --");
foreach (FieldInfo nestedField in nestedArrayObject.GetType().GetFields())
{
if (nestedField.FieldType.IsEnum)
{
- result.AppendFormat("{0, 30}: {1} {2} ({3})" + System.Environment.NewLine,
+ result.AppendFormat("{0,30}: {1,-10} {2,-29} [{3}]" + System.Environment.NewLine,
nestedField.Name,
Enum.Format(nestedField.GetValue(nestedArrayObject).GetType(),
nestedField.GetValue(nestedArrayObject), "D"),
- nestedField.GetValue(nestedArrayObject),
+ "(" + nestedField.GetValue(nestedArrayObject) + ")",
nestedField.GetValue(nestedArrayObject).GetType().Name);
}
else if (nestedField.FieldType.IsInterface)
{
- result.AppendLine(IMessageToString(nestedField.GetValue(nestedArrayObject)));
+ result.AppendLine(IMessageToString(nestedField.GetValue(nestedArrayObject), recurseLevel));
}
else
{
- result.AppendFormat("{0, 30}: {1} ({2})" + Environment.NewLine,
+ result.AppendFormat("{0, 30}: {1,-40} [{2}]" + Environment.NewLine,
nestedField.Name,
nestedField.GetValue(nestedArrayObject),
nestedField.GetValue(nestedArrayObject).GetType().Name);
@@ -1030,19 +1043,20 @@ namespace WinGridProxy
{
if (messageField.FieldType.IsEnum)
{
- result.AppendFormat("{0, 30}: {1} {2} ({3})" + Environment.NewLine,
+ result.AppendFormat("{0,30}: {1,-2} {2,-37} [{3}]" + Environment.NewLine,
messageField.Name,
- Enum.Format(messageField.GetValue(message).GetType(),
+ Enum.Format(messageField.GetValue(message).GetType(),
messageField.GetValue(message), "D"),
- messageField.GetValue(message), messageField.FieldType.Name);
+ "(" + messageField.GetValue(message) + ")",
+ messageField.FieldType.Name);
}
else if (messageField.FieldType.IsInterface)
{
- result.AppendLine(IMessageToString(messageField.GetValue(message)));
+ result.AppendLine(IMessageToString(messageField.GetValue(message), recurseLevel));
}
else
{
- result.AppendFormat("{0, 30}: {1} ({2})" + System.Environment.NewLine,
+ result.AppendFormat("{0, 30}: {1,-40} [{2}]" + System.Environment.NewLine,
messageField.Name, messageField.GetValue(message), messageField.FieldType.Name);
}
}
@@ -1275,7 +1289,7 @@ namespace WinGridProxy
message = OpenMetaverse.Messages.MessageUtils.DecodeEvent(key, data);
if (message != null)
- return IMessageToString(message);
+ return IMessageToString(message, 0);
else
return "No Decoder for " + key + System.Environment.NewLine
+ osd.ToString();