diff --git a/OpenMetaverse/Caps.cs b/OpenMetaverse/Caps.cs
index c79a83c1..19c1fadc 100644
--- a/OpenMetaverse/Caps.cs
+++ b/OpenMetaverse/Caps.cs
@@ -214,7 +214,7 @@ namespace OpenMetaverse
///
private void EventQueueEventHandler(string eventName, OSDMap body)
{
- IMessage message = DecodeEvent(eventName, body);
+ IMessage message = Messages.MessageUtils.DecodeEvent(eventName, body);
if (message != null)
{
if (Simulator.Client.Settings.SYNC_PACKETCALLBACKS)
diff --git a/OpenMetaverse/Messages/LindenMessages.cs b/OpenMetaverse/Messages/LindenMessages.cs
index 4f531792..b546a2e3 100644
--- a/OpenMetaverse/Messages/LindenMessages.cs
+++ b/OpenMetaverse/Messages/LindenMessages.cs
@@ -250,14 +250,20 @@ namespace OpenMetaverse.Messages.Linden
OSDMap map = new OSDMap(2);
OSDMap alertInfoMap = new OSDMap(2);
+
+
alertInfoMap["ExtraParams"] = OSD.FromString(ExtraParams);
alertInfoMap["Message"] = OSD.FromString(MessageKey);
- map["AlertInfo"] = alertInfoMap;
+ OSDArray alertArray = new OSDArray();
+ alertArray.Add(alertInfoMap);
+ map["AlertInfo"] = alertArray;
OSDMap infoMap = new OSDMap(2);
infoMap["AgentID"] = OSD.FromUUID(AgentID);
infoMap["Reason"] = OSD.FromString(Reason);
- map["Info"] = infoMap;
+ OSDArray infoArray = new OSDArray();
+ infoArray.Add(infoMap);
+ map["Info"] = infoArray;
return map;
@@ -269,11 +275,15 @@ namespace OpenMetaverse.Messages.Linden
///
public void Deserialize(OSDMap map)
{
- OSDMap alertInfoMap = (OSDMap)map["AlertInfo"];
+
+ OSDArray alertInfoArray = (OSDArray) map["AlertInfo"];
+
+ OSDMap alertInfoMap = (OSDMap) alertInfoArray[0];
ExtraParams = alertInfoMap["ExtraParams"].AsString();
MessageKey = alertInfoMap["Message"].AsString();
- OSDMap infoMap = (OSDMap) map["Info"];
+ OSDArray infoArray = (OSDArray) map["Info"];
+ OSDMap infoMap = (OSDMap) infoArray[0];
AgentID = infoMap["AgentID"].AsUUID();
Reason = infoMap["Reason"].AsString();
}
@@ -2037,7 +2047,7 @@ namespace OpenMetaverse.Messages.Linden
QueueEvent ev = new QueueEvent();
ev.MessageKey = eventMap["message"].AsString();
- ev.EventMessage = Caps.DecodeEvent(ev.MessageKey, (OSDMap)eventMap["body"]);
+ ev.EventMessage = MessageUtils.DecodeEvent(ev.MessageKey, (OSDMap)eventMap["body"]);
MessageEvents[i] = ev;
}
}
diff --git a/OpenMetaverse/Messages/MessageEventDecoder.cs b/OpenMetaverse/Messages/MessageEventDecoder.cs
index ea18716f..682b518b 100644
--- a/OpenMetaverse/Messages/MessageEventDecoder.cs
+++ b/OpenMetaverse/Messages/MessageEventDecoder.cs
@@ -31,10 +31,10 @@ using OpenMetaverse.StructuredData;
using OpenMetaverse.Interfaces;
using OpenMetaverse.Messages.Linden;
-namespace OpenMetaverse
+namespace OpenMetaverse.Messages
{
-
- public partial class Caps
+
+ public static partial class MessageUtils
{
///
/// Return a decoded capabilities message as a strongly typed object
@@ -77,7 +77,7 @@ namespace OpenMetaverse
case "ViewerStats": message = new ViewerStatsMessage(); break;
case "EventQueueGet": message = new EventQueueGetMessage(); break;
case "CrossedRegion": message = new CrossedRegionMessage(); break;
- case "TelportFailed": message = new TeleportFailedMessage(); break;
+ case "TeleportFailed": message = new TeleportFailedMessage(); break;
// Capabilities TODO:
diff --git a/OpenMetaverse/Messages/Messages.cs b/OpenMetaverse/Messages/Messages.cs
index 06d0972f..28f4cfd2 100644
--- a/OpenMetaverse/Messages/Messages.cs
+++ b/OpenMetaverse/Messages/Messages.cs
@@ -31,7 +31,7 @@ using OpenMetaverse.StructuredData;
namespace OpenMetaverse.Messages
{
- public static class MessageUtils
+ public static partial class MessageUtils
{
public static IPAddress ToIP(OSD osd)
{
diff --git a/Programs/WinGridProxy/Form1.cs b/Programs/WinGridProxy/Form1.cs
index 32b12373..bbc0f2f8 100644
--- a/Programs/WinGridProxy/Form1.cs
+++ b/Programs/WinGridProxy/Form1.cs
@@ -902,6 +902,9 @@ namespace WinGridProxy
/// A formatted string containing the names and values of the source object
public static string IMessageToString(object message)
{
+ if (message == null)
+ return String.Empty;
+
StringBuilder result = new StringBuilder();
// common/custom types
result.AppendFormat("Message Type {0}" + System.Environment.NewLine, message.GetType().Name);
@@ -928,7 +931,7 @@ namespace WinGridProxy
foreach (FieldInfo nestedField in nestedArrayObject.GetType().GetFields())
{
- var nt = nestedField.GetValue(nestedArrayObject).GetType().Name;
+ //var nt = nestedField.GetValue(nestedArrayObject).GetType().Name;
if (nestedField.FieldType.IsEnum)
{
result.AppendFormat("{0, 30}: {1} {2} ({3})" + System.Environment.NewLine,
@@ -937,11 +940,11 @@ namespace WinGridProxy
nestedField.GetValue(nestedArrayObject), "D"),
nestedField.GetValue(nestedArrayObject),
nestedField.GetValue(nestedArrayObject).GetType().Name);
- }
- else if(nestedField.FieldType.IsInterface)
- {
- result.AppendLine(IMessageToString(nestedField.GetValue(nestedArrayObject)));
- }
+ }
+ else if (nestedField.FieldType.IsInterface)
+ {
+ result.AppendLine(IMessageToString(nestedField.GetValue(nestedArrayObject)));
+ }
else
{
result.AppendFormat("{0, 30}: {1} ({2})" + System.Environment.NewLine,
@@ -1331,9 +1334,9 @@ namespace WinGridProxy
OSDMap data = (OSDMap)osd;
IMessage message;
if (data.ContainsKey("body"))
- message = Caps.DecodeEvent(key, (OSDMap)data["body"]);
+ message = OpenMetaverse.Messages.MessageUtils.DecodeEvent(key, (OSDMap)data["body"]);
else
- message = Caps.DecodeEvent(key, data);
+ message = OpenMetaverse.Messages.MessageUtils.DecodeEvent(key, data);
if (message != null)
return IMessageToString(message);