diff --git a/OpenMetaverse/Messages/LindenMessages.cs b/OpenMetaverse/Messages/LindenMessages.cs
index 9616037c..11528fb5 100644
--- a/OpenMetaverse/Messages/LindenMessages.cs
+++ b/OpenMetaverse/Messages/LindenMessages.cs
@@ -1631,6 +1631,103 @@ namespace OpenMetaverse.Messages.Linden
#region ChatSessionRequestMessage
+
+ public interface ISearchStatRequest
+ {
+ ///
+ /// Serialize the object
+ ///
+ /// An containing the objects data
+ OSDMap Serialize();
+
+ ///
+ /// Deserialize the message
+ ///
+ /// An containing the data
+ void Deserialize(OSDMap map);
+ }
+
+ // variant A - the request to the simulator
+ public class SearchStatRequestRequest : ISearchStatRequest
+ {
+ public UUID ClassifiedID;
+
+ public OSDMap Serialize()
+ {
+ OSDMap map = new OSDMap(1);
+ map["classified_id"] = OSD.FromUUID(ClassifiedID);
+ return map;
+ }
+
+ public void Deserialize(OSDMap map)
+ {
+ ClassifiedID = map["classified_id"].AsUUID();
+ }
+
+ }
+
+ public class SearchStatRequestReply : ISearchStatRequest
+ {
+ public int MapClicks;
+ public int ProfileClicks;
+ public int SearchMapClicks;
+ public int SearchProfileClicks;
+ public int SearchTeleportClicks;
+ public int TeleportClicks;
+
+ public OSDMap Serialize()
+ {
+ OSDMap map = new OSDMap(6);
+ map["map_clicks"] = OSD.FromInteger(MapClicks);
+ map["profile_clicks"] = OSD.FromInteger(ProfileClicks);
+ map["search_map_clicks"] = OSD.FromInteger(SearchMapClicks);
+ map["search_profile_clicks"] = OSD.FromInteger(SearchProfileClicks);
+ map["search_teleport_clicks"] = OSD.FromInteger(SearchTeleportClicks);
+ map["teleport_clicks"] = OSD.FromInteger(TeleportClicks);
+ return map;
+ }
+
+ public void Deserialize(OSDMap map)
+ {
+ MapClicks = map["map_clicks"].AsInteger();
+ ProfileClicks = map["profile_clicks"].AsInteger();
+ SearchMapClicks = map["search_map_clicks"].AsInteger();
+ SearchProfileClicks = map["search_profile_clicks"].AsInteger();
+ SearchTeleportClicks = map["search_teleport_clicks"].AsInteger();
+ TeleportClicks = map["teleport_clicks"].AsInteger();
+ }
+ }
+
+ public class SearchStatRequestMessage : IMessage
+ {
+ public ISearchStatRequest Request;
+
+ ///
+ /// Serialize the object
+ ///
+ /// An containing the objects data
+ public OSDMap Serialize()
+ {
+ return Request.Serialize();
+ }
+
+ ///
+ /// Deserialize the message
+ ///
+ /// An containing the data
+ public void Deserialize(OSDMap map)
+ {
+ if (map.ContainsKey("map_clicks"))
+ Request = new SearchStatRequestReply();
+ else if (map.ContainsKey("classified_id"))
+ Request = new SearchStatRequestRequest();
+ else
+ Logger.Log("Unable to deserialize SearchStatRequest: No message handler exists for method " + map["method"].AsString(), Helpers.LogLevel.Warning);
+
+ Request.Deserialize(map);
+ }
+ }
+
public interface IChatSessionRequest
{
///
diff --git a/OpenMetaverse/Messages/MessageEventDecoder.cs b/OpenMetaverse/Messages/MessageEventDecoder.cs
index ae80e75b..11e1af2c 100644
--- a/OpenMetaverse/Messages/MessageEventDecoder.cs
+++ b/OpenMetaverse/Messages/MessageEventDecoder.cs
@@ -80,6 +80,7 @@ namespace OpenMetaverse.Messages
case "UpdateAgentInformation": message = new UpdateAgentInformationMessage(); break;
case "DirLandReply": message = new DirLandReplyMessage(); break;
case "ScriptRunningReply": message = new ScriptRunningReplyMessage(); break;
+ case "SearchStatRequest": message = new SearchStatRequestMessage(); break;
//case "ProductInfoRequest": message = new ProductInfoRequestMessage(); break;
// Capabilities TODO: