diff --git a/OpenSim/Region/ClientStack/Linden/Caps/EventQueue/EventQueueGetHandlers.cs b/OpenSim/Region/ClientStack/Linden/Caps/EventQueue/EventQueueGetHandlers.cs index cf28ec837a..3b89ddc924 100644 --- a/OpenSim/Region/ClientStack/Linden/Caps/EventQueue/EventQueueGetHandlers.cs +++ b/OpenSim/Region/ClientStack/Linden/Caps/EventQueue/EventQueueGetHandlers.cs @@ -54,38 +54,31 @@ namespace OpenSim.Region.ClientStack.Linden } */ - public StringBuilder StartEvent(string eventName) + public osUTF8 StartEvent(string eventName) { - StringBuilder sb = osStringBuilderCache.Acquire(); - LLSDxmlEncode.AddMap(sb); - LLSDxmlEncode.AddElem("message", eventName, sb); - LLSDxmlEncode.AddMap("body", sb); + osUTF8 sb = OSUTF8Cached.Acquire(); + LLSDxmlEncode2.AddMap(sb); + LLSDxmlEncode2.AddElem("message", eventName, sb); + LLSDxmlEncode2.AddMap("body", sb); return sb; } - public StringBuilder StartEvent(string eventName, int cap) + public osUTF8 StartEvent(string eventName, int cap) { - StringBuilder sb = osStringBuilderCache.Acquire(); - LLSDxmlEncode.AddMap(sb); - LLSDxmlEncode.AddElem("message", eventName, sb); - LLSDxmlEncode.AddMap("body", sb); + osUTF8 sb = OSUTF8Cached.Acquire(cap); + LLSDxmlEncode2.AddMap(sb); + LLSDxmlEncode2.AddElem("message", eventName, sb); + LLSDxmlEncode2.AddMap("body", sb); return sb; } - public string EndEvent(StringBuilder sb) + public byte[] EndEventToBytes(osUTF8 sb) { - LLSDxmlEncode.AddEndMap(sb); // close body - LLSDxmlEncode.AddEndMap(sb); // close event - return osStringBuilderCache.GetStringAndRelease(sb); - } - - public byte[] EndEventToBytes(StringBuilder sb) - { - LLSDxmlEncode.AddEndMap(sb); // close body - LLSDxmlEncode.AddEndMap(sb); // close event - return Util.UTF8NBGetbytes(osStringBuilderCache.GetStringAndRelease(sb)); + LLSDxmlEncode2.AddEndMap(sb); // close body + LLSDxmlEncode2.AddEndMap(sb); // close event + return OSUTF8Cached.GetArrayAndRelease(sb); } public virtual void EnableSimulator(ulong handle, IPEndPoint endPoint, UUID avatarID, int regionSizeX, int regionSizeY) @@ -94,14 +87,14 @@ namespace OpenSim.Region.ClientStack.Linden m_log.DebugFormat("{0} EnableSimulator. handle={1}, endPoint={2}, avatarID={3}", LogHeader, handle, endPoint, avatarID, regionSizeX, regionSizeY); - StringBuilder sb = StartEvent("EnableSimulator"); - LLSDxmlEncode.AddArrayAndMap("SimulatorInfo", sb); - LLSDxmlEncode.AddElem("Handle", handle, sb); - LLSDxmlEncode.AddElem("IP", endPoint.Address.GetAddressBytes(), sb); - LLSDxmlEncode.AddElem("Port", endPoint.Port, sb); - LLSDxmlEncode.AddElem("RegionSizeX", (uint)regionSizeX, sb); - LLSDxmlEncode.AddElem("RegionSizeY", (uint)regionSizeY, sb); - LLSDxmlEncode.AddEndMapAndArray(sb); + osUTF8 sb = StartEvent("EnableSimulator"); + LLSDxmlEncode2.AddArrayAndMap("SimulatorInfo", sb); + LLSDxmlEncode2.AddElem("Handle", handle, sb); + LLSDxmlEncode2.AddElem("IP", endPoint.Address.GetAddressBytes(), sb); + LLSDxmlEncode2.AddElem("Port", endPoint.Port, sb); + LLSDxmlEncode2.AddElem("RegionSizeX", (uint)regionSizeX, sb); + LLSDxmlEncode2.AddElem("RegionSizeY", (uint)regionSizeY, sb); + LLSDxmlEncode2.AddEndMapAndArray(sb); Enqueue(EndEventToBytes(sb), avatarID); } @@ -113,15 +106,15 @@ namespace OpenSim.Region.ClientStack.Linden m_log.DebugFormat("{0} EstablishAgentCommunication. handle={1}, endPoint={2}, avatarID={3}", LogHeader, regionHandle, endPoint, avatarID, regionSizeX, regionSizeY); - StringBuilder sb = StartEvent("EstablishAgentCommunication"); + osUTF8 sb = StartEvent("EstablishAgentCommunication"); - LLSDxmlEncode.AddElem("agent-id", avatarID, sb); - LLSDxmlEncode.AddElem("sim-ip-and-port", endPoint.ToString(), sb); - LLSDxmlEncode.AddElem("seed-capability", capsPath, sb); + LLSDxmlEncode2.AddElem("agent-id", avatarID, sb); + LLSDxmlEncode2.AddElem("sim-ip-and-port", endPoint.ToString(), sb); + LLSDxmlEncode2.AddElem("seed-capability", capsPath, sb); // current viewers ignore this, also not needed its sent on enablesim - //LLSDxmlEncode.AddElem("region-handle", regionHandle, sb); - //LLSDxmlEncode.AddElem("region-size-x", (uint)regionSizeX, sb); - //LLSDxmlEncode.AddElem("region-size-y", (uint)regionSizeY, sb); + //LLSDxmlEncode2.AddElem("region-handle", regionHandle, sb); + //LLSDxmlEncode2.AddElem("region-size-x", (uint)regionSizeX, sb); + //LLSDxmlEncode2.AddElem("region-size-y", (uint)regionSizeY, sb); Enqueue(EndEventToBytes(sb), avatarID); } @@ -141,20 +134,20 @@ namespace OpenSim.Region.ClientStack.Linden else flags = (uint)TeleportFlags.ViaLocation; - StringBuilder sb = StartEvent("TeleportFinish"); + osUTF8 sb = StartEvent("TeleportFinish"); - LLSDxmlEncode.AddArrayAndMap("Info", sb); - LLSDxmlEncode.AddElem("AgentID", avatarID, sb); - LLSDxmlEncode.AddElem("LocationID", (uint)4, sb); // TODO what is this? - LLSDxmlEncode.AddElem("SimIP", regionExternalEndPoint.Address.GetAddressBytes(), sb); - LLSDxmlEncode.AddElem("SimPort", regionExternalEndPoint.Port, sb); - LLSDxmlEncode.AddElem("RegionHandle", regionHandle, sb); - LLSDxmlEncode.AddElem("SeedCapability", capsURL, sb); - LLSDxmlEncode.AddElem("SimAccess",(int)simAccess, sb); - LLSDxmlEncode.AddElem("TeleportFlags", flags, sb); - LLSDxmlEncode.AddElem("RegionSizeX", (uint)regionSizeX, sb); - LLSDxmlEncode.AddElem("RegionSizeY", (uint)regionSizeY, sb); - LLSDxmlEncode.AddEndMapAndArray(sb); + LLSDxmlEncode2.AddArrayAndMap("Info", sb); + LLSDxmlEncode2.AddElem("AgentID", avatarID, sb); + LLSDxmlEncode2.AddElem("LocationID", (uint)4, sb); // TODO what is this? + LLSDxmlEncode2.AddElem("SimIP", regionExternalEndPoint.Address.GetAddressBytes(), sb); + LLSDxmlEncode2.AddElem("SimPort", regionExternalEndPoint.Port, sb); + LLSDxmlEncode2.AddElem("RegionHandle", regionHandle, sb); + LLSDxmlEncode2.AddElem("SeedCapability", capsURL, sb); + LLSDxmlEncode2.AddElem("SimAccess",(int)simAccess, sb); + LLSDxmlEncode2.AddElem("TeleportFlags", flags, sb); + LLSDxmlEncode2.AddElem("RegionSizeX", (uint)regionSizeX, sb); + LLSDxmlEncode2.AddElem("RegionSizeY", (uint)regionSizeY, sb); + LLSDxmlEncode2.AddEndMapAndArray(sb); Enqueue(EndEventToBytes(sb), avatarID); } @@ -167,26 +160,26 @@ namespace OpenSim.Region.ClientStack.Linden m_log.DebugFormat("{0} CrossRegion. handle={1}, avatarID={2}, regionSize={3},{4}>", LogHeader, handle, avatarID, regionSizeX, regionSizeY); - StringBuilder sb = StartEvent("CrossedRegion"); + osUTF8 sb = StartEvent("CrossedRegion"); - LLSDxmlEncode.AddArrayAndMap("AgentData", sb); - LLSDxmlEncode.AddElem("AgentID", avatarID, sb); - LLSDxmlEncode.AddElem("SessionID", sessionID, sb); - LLSDxmlEncode.AddEndMapAndArray(sb); + LLSDxmlEncode2.AddArrayAndMap("AgentData", sb); + LLSDxmlEncode2.AddElem("AgentID", avatarID, sb); + LLSDxmlEncode2.AddElem("SessionID", sessionID, sb); + LLSDxmlEncode2.AddEndMapAndArray(sb); - LLSDxmlEncode.AddArrayAndMap("Info", sb); - LLSDxmlEncode.AddElem("LookAt", lookAt, sb); - LLSDxmlEncode.AddElem("Position", pos, sb); - LLSDxmlEncode.AddEndMapAndArray(sb); + LLSDxmlEncode2.AddArrayAndMap("Info", sb); + LLSDxmlEncode2.AddElem("LookAt", lookAt, sb); + LLSDxmlEncode2.AddElem("Position", pos, sb); + LLSDxmlEncode2.AddEndMapAndArray(sb); - LLSDxmlEncode.AddArrayAndMap("RegionData", sb); - LLSDxmlEncode.AddElem("RegionHandle", handle, sb); - LLSDxmlEncode.AddElem("SeedCapability", capsURL, sb); - LLSDxmlEncode.AddElem("SimIP", newRegionExternalEndPoint.Address.GetAddressBytes(), sb); - LLSDxmlEncode.AddElem("SimPort", newRegionExternalEndPoint.Port, sb); - LLSDxmlEncode.AddElem("RegionSizeX", (uint)regionSizeX, sb); - LLSDxmlEncode.AddElem("RegionSizeY", (uint)regionSizeY, sb); - LLSDxmlEncode.AddEndMapAndArray(sb); + LLSDxmlEncode2.AddArrayAndMap("RegionData", sb); + LLSDxmlEncode2.AddElem("RegionHandle", handle, sb); + LLSDxmlEncode2.AddElem("SeedCapability", capsURL, sb); + LLSDxmlEncode2.AddElem("SimIP", newRegionExternalEndPoint.Address.GetAddressBytes(), sb); + LLSDxmlEncode2.AddElem("SimPort", newRegionExternalEndPoint.Port, sb); + LLSDxmlEncode2.AddElem("RegionSizeX", (uint)regionSizeX, sb); + LLSDxmlEncode2.AddElem("RegionSizeY", (uint)regionSizeY, sb); + LLSDxmlEncode2.AddEndMapAndArray(sb); Enqueue(EndEventToBytes(sb), avatarID); } @@ -196,37 +189,37 @@ namespace OpenSim.Region.ClientStack.Linden Vector3 position, uint ttl, UUID transactionID, bool fromGroup, byte[] binaryBucket, bool checkEstate, int godLevel, bool limitedToEstate) { - StringBuilder sb = new StringBuilder(512); - LLSDxmlEncode.AddMap("instantmessage", sb); - LLSDxmlEncode.AddMap("message_params", sb); //messageParams - LLSDxmlEncode.AddElem("type", dialog, sb); - LLSDxmlEncode.AddElem("position", position, sb); - LLSDxmlEncode.AddElem("region_id", UUID.Zero, sb); - LLSDxmlEncode.AddElem("to_id", toAgent, sb); - LLSDxmlEncode.AddElem("source", 0, sb); + osUTF8 sb = new osUTF8(512); + LLSDxmlEncode2.AddMap("instantmessage", sb); + LLSDxmlEncode2.AddMap("message_params", sb); //messageParams + LLSDxmlEncode2.AddElem("type", dialog, sb); + LLSDxmlEncode2.AddElem("position", position, sb); + LLSDxmlEncode2.AddElem("region_id", UUID.Zero, sb); + LLSDxmlEncode2.AddElem("to_id", toAgent, sb); + LLSDxmlEncode2.AddElem("source", 0, sb); - LLSDxmlEncode.AddMap("data", sb); //messageParams data - LLSDxmlEncode.AddElem("binary_bucket", binaryBucket, sb); - LLSDxmlEncode.AddEndMap(sb); //messageParams data + LLSDxmlEncode2.AddMap("data", sb); //messageParams data + LLSDxmlEncode2.AddElem("binary_bucket", binaryBucket, sb); + LLSDxmlEncode2.AddEndMap(sb); //messageParams data - LLSDxmlEncode.AddElem("message", message, sb); - LLSDxmlEncode.AddElem("id", transactionID, sb); - LLSDxmlEncode.AddElem("from_name", fromName, sb); - LLSDxmlEncode.AddElem("timestamp", timeStamp, sb); - LLSDxmlEncode.AddElem("offline", (offline ? 1 : 0), sb); - LLSDxmlEncode.AddElem("parent_estate_id", parentEstateID, sb); - LLSDxmlEncode.AddElem("ttl", (int)ttl, sb); - LLSDxmlEncode.AddElem("from_id", fromAgent, sb); - LLSDxmlEncode.AddElem("from_group", fromGroup, sb); - LLSDxmlEncode.AddEndMap(sb); //messageParams + LLSDxmlEncode2.AddElem("message", message, sb); + LLSDxmlEncode2.AddElem("id", transactionID, sb); + LLSDxmlEncode2.AddElem("from_name", fromName, sb); + LLSDxmlEncode2.AddElem("timestamp", timeStamp, sb); + LLSDxmlEncode2.AddElem("offline", (offline ? 1 : 0), sb); + LLSDxmlEncode2.AddElem("parent_estate_id", parentEstateID, sb); + LLSDxmlEncode2.AddElem("ttl", (int)ttl, sb); + LLSDxmlEncode2.AddElem("from_id", fromAgent, sb); + LLSDxmlEncode2.AddElem("from_group", fromGroup, sb); + LLSDxmlEncode2.AddEndMap(sb); //messageParams - LLSDxmlEncode.AddMap("agent_params", sb); - LLSDxmlEncode.AddElem("agent_id", fromAgent, sb); - LLSDxmlEncode.AddElem("check_estate", checkEstate, sb); - LLSDxmlEncode.AddElem("god_level", godLevel, sb); - LLSDxmlEncode.AddElem("limited_to_estate", limitedToEstate, sb); - LLSDxmlEncode.AddEndMap(sb); // agent params - LLSDxmlEncode.AddEndMap(sb); + LLSDxmlEncode2.AddMap("agent_params", sb); + LLSDxmlEncode2.AddElem("agent_id", fromAgent, sb); + LLSDxmlEncode2.AddElem("check_estate", checkEstate, sb); + LLSDxmlEncode2.AddElem("god_level", godLevel, sb); + LLSDxmlEncode2.AddElem("limited_to_estate", limitedToEstate, sb); + LLSDxmlEncode2.AddEndMap(sb); // agent params + LLSDxmlEncode2.AddEndMap(sb); return sb.ToString(); } @@ -236,13 +229,13 @@ namespace OpenSim.Region.ClientStack.Linden uint timeStamp, bool offline, int parentEstateID, Vector3 position, uint ttl, UUID transactionID, bool fromGroup, byte[] binaryBucket) { - StringBuilder sb = StartEvent("ChatterBoxInvitation"); - LLSDxmlEncode.AddElem("session_id", sessionID, sb); - LLSDxmlEncode.AddElem("from_name", fromName, sb); - LLSDxmlEncode.AddElem("session_name", sessionName, sb); - LLSDxmlEncode.AddElem("from_id", fromAgent, sb); + osUTF8 sb = StartEvent("ChatterBoxInvitation"); + LLSDxmlEncode2.AddElem("session_id", sessionID, sb); + LLSDxmlEncode2.AddElem("from_name", fromName, sb); + LLSDxmlEncode2.AddElem("session_name", sessionName, sb); + LLSDxmlEncode2.AddElem("from_id", fromAgent, sb); - LLSDxmlEncode.AddLLSD(InstantMessageBody(fromAgent, message, toAgent, + LLSDxmlEncode2.AddLLSD(InstantMessageBody(fromAgent, message, toAgent, fromName, dialog, timeStamp, offline, parentEstateID, position, ttl, transactionID, fromGroup, binaryBucket, true, 0, true), sb); @@ -251,27 +244,27 @@ namespace OpenSim.Region.ClientStack.Linden public void ChatterBoxSessionAgentListUpdates(UUID sessionID, UUID toAgent, List updates) { - StringBuilder sb = StartEvent("ChatterBoxSessionAgentListUpdates",1024); - LLSDxmlEncode.AddMap("agent_updates",sb); + osUTF8 sb = StartEvent("ChatterBoxSessionAgentListUpdates",1024); + LLSDxmlEncode2.AddMap("agent_updates",sb); foreach (GroupChatListAgentUpdateData up in updates) { - LLSDxmlEncode.AddMap(up.agentID.ToString(), sb); - LLSDxmlEncode.AddMap("info", sb); - LLSDxmlEncode.AddElem("can_voice_chat", up.canVoice, sb); - LLSDxmlEncode.AddElem("is_moderator", up.isModerator, sb); - LLSDxmlEncode.AddMap("mutes",sb); - LLSDxmlEncode.AddElem("text", up.mutedText, sb); - LLSDxmlEncode.AddEndMap(sb); // mutes - LLSDxmlEncode.AddEndMap(sb); // info + LLSDxmlEncode2.AddMap(up.agentID.ToString(), sb); + LLSDxmlEncode2.AddMap("info", sb); + LLSDxmlEncode2.AddElem("can_voice_chat", up.canVoice, sb); + LLSDxmlEncode2.AddElem("is_moderator", up.isModerator, sb); + LLSDxmlEncode2.AddMap("mutes",sb); + LLSDxmlEncode2.AddElem("text", up.mutedText, sb); + LLSDxmlEncode2.AddEndMap(sb); // mutes + LLSDxmlEncode2.AddEndMap(sb); // info if (up.enterOrLeave) - LLSDxmlEncode.AddElem("transition", "ENTER", sb); + LLSDxmlEncode2.AddElem("transition", "ENTER", sb); else - LLSDxmlEncode.AddElem("transition", "LEAVE", sb); - LLSDxmlEncode.AddEndMap(sb); //agentid + LLSDxmlEncode2.AddElem("transition", "LEAVE", sb); + LLSDxmlEncode2.AddEndMap(sb); //agentid } - LLSDxmlEncode.AddEndMap(sb); // agent_updates - LLSDxmlEncode.AddEmptyMap("updates",sb); - LLSDxmlEncode.AddElem("session_id", sessionID, sb); + LLSDxmlEncode2.AddEndMap(sb); // agent_updates + LLSDxmlEncode2.AddEmptyMap("updates",sb); + LLSDxmlEncode2.AddElem("session_id", sessionID, sb); Enqueue(EndEventToBytes(sb), toAgent); } @@ -281,75 +274,75 @@ namespace OpenSim.Region.ClientStack.Linden bool sucess, string error, UUID toAgent) { - StringBuilder sb = StartEvent("ChatterBoxSessionStartReply"); - LLSDxmlEncode.AddElem("session_id", sessionID, sb); - LLSDxmlEncode.AddElem("temp_session_id", tmpSessionID, sb); - LLSDxmlEncode.AddElem("success", sucess, sb); + osUTF8 sb = StartEvent("ChatterBoxSessionStartReply"); + LLSDxmlEncode2.AddElem("session_id", sessionID, sb); + LLSDxmlEncode2.AddElem("temp_session_id", tmpSessionID, sb); + LLSDxmlEncode2.AddElem("success", sucess, sb); if(sucess) { - LLSDxmlEncode.AddMap("session_info", sb); - LLSDxmlEncode.AddMap("moderated_mode", sb); - LLSDxmlEncode.AddElem("voice", voiceModerated, sb); - LLSDxmlEncode.AddEndMap(sb); - LLSDxmlEncode.AddElem("session_name", sessionName, sb); - LLSDxmlEncode.AddElem("type", type, sb); - LLSDxmlEncode.AddElem("voice_enabled", voiceEnabled, sb); - LLSDxmlEncode.AddEndMap(sb); + LLSDxmlEncode2.AddMap("session_info", sb); + LLSDxmlEncode2.AddMap("moderated_mode", sb); + LLSDxmlEncode2.AddElem("voice", voiceModerated, sb); + LLSDxmlEncode2.AddEndMap(sb); + LLSDxmlEncode2.AddElem("session_name", sessionName, sb); + LLSDxmlEncode2.AddElem("type", type, sb); + LLSDxmlEncode2.AddElem("voice_enabled", voiceEnabled, sb); + LLSDxmlEncode2.AddEndMap(sb); } else - LLSDxmlEncode.AddElem("error", String.IsNullOrEmpty(error) ? "" : error, sb); + LLSDxmlEncode2.AddElem("error", String.IsNullOrEmpty(error) ? "" : error, sb); Enqueue(EndEventToBytes(sb), toAgent); } public void ChatterBoxForceClose(UUID toAgent, UUID sessionID, string reason) { - StringBuilder sb = StartEvent("ForceCloseChatterBoxSession"); - LLSDxmlEncode.AddElem("session_id", sessionID, sb); - LLSDxmlEncode.AddElem("reason", reason, sb); + osUTF8 sb = StartEvent("ForceCloseChatterBoxSession"); + LLSDxmlEncode2.AddElem("session_id", sessionID, sb); + LLSDxmlEncode2.AddElem("reason", reason, sb); Enqueue(EndEventToBytes(sb), toAgent); } public void GroupMembershipData(UUID AgentID, GroupMembershipData[] data) { - StringBuilder sb = StartEvent("AgentGroupDataUpdate"); + osUTF8 sb = StartEvent("AgentGroupDataUpdate"); - LLSDxmlEncode.AddArrayAndMap("AgentData", sb); - LLSDxmlEncode.AddElem("AgentID", AgentID, sb); - LLSDxmlEncode.AddEndMapAndArray(sb); + LLSDxmlEncode2.AddArrayAndMap("AgentData", sb); + LLSDxmlEncode2.AddElem("AgentID", AgentID, sb); + LLSDxmlEncode2.AddEndMapAndArray(sb); if (data.Length == 0) { - LLSDxmlEncode.AddEmptyArray("GroupData", sb); - LLSDxmlEncode.AddEmptyArray("NewGroupData", sb); + LLSDxmlEncode2.AddEmptyArray("GroupData", sb); + LLSDxmlEncode2.AddEmptyArray("NewGroupData", sb); } else { List lstInProfiles = new List(data.Length); - LLSDxmlEncode.AddArray("GroupData", sb); + LLSDxmlEncode2.AddArray("GroupData", sb); foreach (GroupMembershipData m in data) { - LLSDxmlEncode.AddMap(sb); - LLSDxmlEncode.AddElem("GroupID", m.GroupID, sb); - LLSDxmlEncode.AddElem("GroupPowers", m.GroupPowers, sb); - LLSDxmlEncode.AddElem("AcceptNotices", m.AcceptNotices, sb); - LLSDxmlEncode.AddElem("GroupInsigniaID", m.GroupPicture, sb); - LLSDxmlEncode.AddElem("Contribution", m.Contribution, sb); - LLSDxmlEncode.AddElem("GroupName", m.GroupName, sb); - LLSDxmlEncode.AddEndMap(sb); + LLSDxmlEncode2.AddMap(sb); + LLSDxmlEncode2.AddElem("GroupID", m.GroupID, sb); + LLSDxmlEncode2.AddElem("GroupPowers", m.GroupPowers, sb); + LLSDxmlEncode2.AddElem("AcceptNotices", m.AcceptNotices, sb); + LLSDxmlEncode2.AddElem("GroupInsigniaID", m.GroupPicture, sb); + LLSDxmlEncode2.AddElem("Contribution", m.Contribution, sb); + LLSDxmlEncode2.AddElem("GroupName", m.GroupName, sb); + LLSDxmlEncode2.AddEndMap(sb); lstInProfiles.Add(m.ListInProfile); } - LLSDxmlEncode.AddEndArray(sb); + LLSDxmlEncode2.AddEndArray(sb); - LLSDxmlEncode.AddArray("NewGroupData", sb); + LLSDxmlEncode2.AddArray("NewGroupData", sb); foreach(bool b in lstInProfiles) { - LLSDxmlEncode.AddMap(sb); - LLSDxmlEncode.AddElem("ListInProfile", b, sb); - LLSDxmlEncode.AddEndMap(sb); + LLSDxmlEncode2.AddMap(sb); + LLSDxmlEncode2.AddElem("ListInProfile", b, sb); + LLSDxmlEncode2.AddEndMap(sb); } - LLSDxmlEncode.AddEndArray(sb); + LLSDxmlEncode2.AddEndArray(sb); } Enqueue(EndEventToBytes(sb), AgentID); @@ -357,54 +350,54 @@ namespace OpenSim.Region.ClientStack.Linden public void PlacesQueryReply(UUID avatarID, UUID queryID, UUID transactionID, PlacesReplyData[] replyDataArray) { - StringBuilder sb = new StringBuilder(256); - LLSDxmlEncode.AddMap(sb); - LLSDxmlEncode.AddElem("message", "PlacesReplyMessage", sb); - LLSDxmlEncode.AddMap("QueryData[]", sb); LLSDxmlEncode.AddArray(sb); - LLSDxmlEncode.AddArray("AgentData", sb); - LLSDxmlEncode.AddMap(sb); - LLSDxmlEncode.AddElem("AgentID", avatarID, sb); - LLSDxmlEncode.AddElem("QueryID", queryID, sb); - LLSDxmlEncode.AddElem("TransactionID", transactionID, sb); - LLSDxmlEncode.AddEndMap(sb); - LLSDxmlEncode.AddEndArray(sb); + osUTF8 sb = new osUTF8(256); + LLSDxmlEncode2.AddMap(sb); + LLSDxmlEncode2.AddElem("message", "PlacesReplyMessage", sb); + LLSDxmlEncode2.AddMap("QueryData[]", sb); LLSDxmlEncode2.AddArray(sb); + LLSDxmlEncode2.AddArray("AgentData", sb); + LLSDxmlEncode2.AddMap(sb); + LLSDxmlEncode2.AddElem("AgentID", avatarID, sb); + LLSDxmlEncode2.AddElem("QueryID", queryID, sb); + LLSDxmlEncode2.AddElem("TransactionID", transactionID, sb); + LLSDxmlEncode2.AddEndMap(sb); + LLSDxmlEncode2.AddEndArray(sb); - LLSDxmlEncode.AddArray("QueryData", sb); + LLSDxmlEncode2.AddArray("QueryData", sb); for (int i = 0; i < replyDataArray.Length; ++i) { PlacesReplyData data = replyDataArray[i]; - LLSDxmlEncode.AddMap(sb); - LLSDxmlEncode.AddElem("ActualArea", data.ActualArea, sb); - LLSDxmlEncode.AddElem("BillableArea", data.BillableArea, sb); - LLSDxmlEncode.AddElem("Description", data.Desc, sb); - LLSDxmlEncode.AddElem("Dwell", data.Dwell, sb); - LLSDxmlEncode.AddElem("Flags", data.Flags, sb); - LLSDxmlEncode.AddElem("GlobalX", data.GlobalX, sb); - LLSDxmlEncode.AddElem("GlobalY", data.GlobalY, sb); - LLSDxmlEncode.AddElem("GlobalZ", data.GlobalZ, sb); - LLSDxmlEncode.AddElem("Name", data.Name, sb); - LLSDxmlEncode.AddElem("OwnerID", data.OwnerID, sb); - LLSDxmlEncode.AddElem("SimName", data.SimName, sb); - LLSDxmlEncode.AddElem("SnapShotID", data.SnapshotID, sb); - LLSDxmlEncode.AddElem("ProductSku", (int)0, sb); - LLSDxmlEncode.AddElem("Price", data.Price, sb); - LLSDxmlEncode.AddEndMap(sb); + LLSDxmlEncode2.AddMap(sb); + LLSDxmlEncode2.AddElem("ActualArea", data.ActualArea, sb); + LLSDxmlEncode2.AddElem("BillableArea", data.BillableArea, sb); + LLSDxmlEncode2.AddElem("Description", data.Desc, sb); + LLSDxmlEncode2.AddElem("Dwell", data.Dwell, sb); + LLSDxmlEncode2.AddElem("Flags", data.Flags, sb); + LLSDxmlEncode2.AddElem("GlobalX", data.GlobalX, sb); + LLSDxmlEncode2.AddElem("GlobalY", data.GlobalY, sb); + LLSDxmlEncode2.AddElem("GlobalZ", data.GlobalZ, sb); + LLSDxmlEncode2.AddElem("Name", data.Name, sb); + LLSDxmlEncode2.AddElem("OwnerID", data.OwnerID, sb); + LLSDxmlEncode2.AddElem("SimName", data.SimName, sb); + LLSDxmlEncode2.AddElem("SnapShotID", data.SnapshotID, sb); + LLSDxmlEncode2.AddElem("ProductSku", (int)0, sb); + LLSDxmlEncode2.AddElem("Price", data.Price, sb); + LLSDxmlEncode2.AddEndMap(sb); } - LLSDxmlEncode.AddEndArray(sb); + LLSDxmlEncode2.AddEndArray(sb); Enqueue(EndEventToBytes(sb), avatarID); } public void ScriptRunningEvent(UUID objectID, UUID itemID, bool running, UUID avatarID) { - StringBuilder sb = StartEvent("ScriptRunningReply"); - LLSDxmlEncode.AddArrayAndMap("Script", sb); - LLSDxmlEncode.AddElem("ObjectID", objectID, sb); - LLSDxmlEncode.AddElem("ItemID", itemID, sb); - LLSDxmlEncode.AddElem("Running", running, sb); - LLSDxmlEncode.AddElem("Mono", true, sb); - LLSDxmlEncode.AddEndMapAndArray(sb); + osUTF8 sb = StartEvent("ScriptRunningReply"); + LLSDxmlEncode2.AddArrayAndMap("Script", sb); + LLSDxmlEncode2.AddElem("ObjectID", objectID, sb); + LLSDxmlEncode2.AddElem("ItemID", itemID, sb); + LLSDxmlEncode2.AddElem("Running", running, sb); + LLSDxmlEncode2.AddElem("Mono", true, sb); + LLSDxmlEncode2.AddEndMapAndArray(sb); Enqueue(EndEventToBytes(sb), avatarID); } @@ -412,34 +405,34 @@ namespace OpenSim.Region.ClientStack.Linden public void partPhysicsProperties(uint localID, byte physhapetype, float density, float friction, float bounce, float gravmod, UUID avatarID) { - StringBuilder sb = StartEvent("ObjectPhysicsProperties"); - LLSDxmlEncode.AddArrayAndMap("ObjectData", sb); - LLSDxmlEncode.AddElem("LocalID", (int)localID, sb); - LLSDxmlEncode.AddElem("Density", density, sb); - LLSDxmlEncode.AddElem("Friction", friction, sb); - LLSDxmlEncode.AddElem("GravityMultiplier", gravmod, sb); - LLSDxmlEncode.AddElem("Restitution", bounce, sb); - LLSDxmlEncode.AddElem("PhysicsShapeType", (int)physhapetype, sb); - LLSDxmlEncode.AddEndMapAndArray(sb); + osUTF8 sb = StartEvent("ObjectPhysicsProperties"); + LLSDxmlEncode2.AddArrayAndMap("ObjectData", sb); + LLSDxmlEncode2.AddElem("LocalID", (int)localID, sb); + LLSDxmlEncode2.AddElem("Density", density, sb); + LLSDxmlEncode2.AddElem("Friction", friction, sb); + LLSDxmlEncode2.AddElem("GravityMultiplier", gravmod, sb); + LLSDxmlEncode2.AddElem("Restitution", bounce, sb); + LLSDxmlEncode2.AddElem("PhysicsShapeType", (int)physhapetype, sb); + LLSDxmlEncode2.AddEndMapAndArray(sb); Enqueue(EndEventToBytes(sb), avatarID); } public void WindlightRefreshEvent(int interpolate, UUID avatarID) { - StringBuilder sb = StartEvent("WindLightRefresh"); - LLSDxmlEncode.AddElem("Interpolate", interpolate > 0 ? 1 : 0, sb); + osUTF8 sb = StartEvent("WindLightRefresh"); + LLSDxmlEncode2.AddElem("Interpolate", interpolate > 0 ? 1 : 0, sb); Enqueue(EndEventToBytes(sb), avatarID); } public static string KeepAliveEvent() { - StringBuilder sb = new StringBuilder(256); - LLSDxmlEncode.AddMap(sb); - LLSDxmlEncode.AddElem("message", "FAKEEVENT", sb); - LLSDxmlEncode.AddMap("body", sb); - LLSDxmlEncode.AddEndMap(sb); // close body - LLSDxmlEncode.AddEndMap(sb); // close event + osUTF8 sb = new osUTF8(256); + LLSDxmlEncode2.AddMap(sb); + LLSDxmlEncode2.AddElem("message", "FAKEEVENT", sb); + LLSDxmlEncode2.AddMap("body", sb); + LLSDxmlEncode2.AddEndMap(sb); // close body + LLSDxmlEncode2.AddEndMap(sb); // close event return sb.ToString(); } diff --git a/OpenSim/Region/ClientStack/Linden/Caps/EventQueue/EventQueueGetModule.cs b/OpenSim/Region/ClientStack/Linden/Caps/EventQueue/EventQueueGetModule.cs index d5ea325525..35971a428a 100755 --- a/OpenSim/Region/ClientStack/Linden/Caps/EventQueue/EventQueueGetModule.cs +++ b/OpenSim/Region/ClientStack/Linden/Caps/EventQueue/EventQueueGetModule.cs @@ -290,6 +290,32 @@ namespace OpenSim.Region.ClientStack.Linden return true; } + public bool Enqueue(osUTF8 o, UUID avatarID) + { + //m_log.DebugFormat("[EVENTQUEUE]: Enqueuing event for {0} in region {1}", avatarID, m_scene.RegionInfo.RegionName); + try + { + Queue queue = GetQueue(avatarID); + if (queue != null) + { + lock (queue) + queue.Enqueue(o.ToArray()); + } + else + { + m_log.WarnFormat( + "[EVENTQUEUE]: (Enqueue) No queue found for agent {0} in region {1}", + avatarID, m_scene.Name); + } + } + catch (NullReferenceException e) + { + m_log.Error("[EVENTQUEUE] Caught exception: " + e); + return false; + } + return true; + } + #endregion private void ClientClosed(UUID agentID, Scene scene) diff --git a/OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs b/OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs index 4228609965..9d3877d693 100755 --- a/OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs +++ b/OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs @@ -3514,49 +3514,49 @@ namespace OpenSim.Region.ClientStack.LindenUDP } else { - StringBuilder sb = eq.StartEvent("LandStatReply"); + osUTF8 sb = eq.StartEvent("LandStatReply"); - LLSDxmlEncode.AddArrayAndMap("RequestData", sb); - LLSDxmlEncode.AddElem("ReportType", reportType, sb); - LLSDxmlEncode.AddElem("RequestFlags", requestFlags, sb); - LLSDxmlEncode.AddElem("TotalObjectCount", (uint)lsrpia.Length, sb); - LLSDxmlEncode.AddEndMapAndArray(sb); + LLSDxmlEncode2.AddArrayAndMap("RequestData", sb); + LLSDxmlEncode2.AddElem("ReportType", reportType, sb); + LLSDxmlEncode2.AddElem("RequestFlags", requestFlags, sb); + LLSDxmlEncode2.AddElem("TotalObjectCount", (uint)lsrpia.Length, sb); + LLSDxmlEncode2.AddEndMapAndArray(sb); if (lsrpia.Length > 0) { - LLSDxmlEncode.AddArray("ReportData", sb); + LLSDxmlEncode2.AddArray("ReportData", sb); foreach (var item in lsrpia) { - LLSDxmlEncode.AddMap(sb); - LLSDxmlEncode.AddElem("LocationX", item.LocationX, sb); - LLSDxmlEncode.AddElem("LocationY", item.LocationY, sb); - LLSDxmlEncode.AddElem("LocationZ", item.LocationZ, sb); - LLSDxmlEncode.AddElem("OwnerName", item.OwnerName, sb); - LLSDxmlEncode.AddElem("Score", item.Score, sb); - LLSDxmlEncode.AddElem("TaskID", item.TaskID, sb); - LLSDxmlEncode.AddElem("TaskLocalID", item.TaskLocalID, sb); - LLSDxmlEncode.AddElem("TaskName", item.TaskName, sb); - LLSDxmlEncode.AddEndMap(sb); + LLSDxmlEncode2.AddMap(sb); + LLSDxmlEncode2.AddElem("LocationX", item.LocationX, sb); + LLSDxmlEncode2.AddElem("LocationY", item.LocationY, sb); + LLSDxmlEncode2.AddElem("LocationZ", item.LocationZ, sb); + LLSDxmlEncode2.AddElem("OwnerName", item.OwnerName, sb); + LLSDxmlEncode2.AddElem("Score", item.Score, sb); + LLSDxmlEncode2.AddElem("TaskID", item.TaskID, sb); + LLSDxmlEncode2.AddElem("TaskLocalID", item.TaskLocalID, sb); + LLSDxmlEncode2.AddElem("TaskName", item.TaskName, sb); + LLSDxmlEncode2.AddEndMap(sb); } - LLSDxmlEncode.AddEndArray(sb); + LLSDxmlEncode2.AddEndArray(sb); - LLSDxmlEncode.AddArray("DataExtended", sb); + LLSDxmlEncode2.AddArray("DataExtended", sb); foreach (var item in lsrpia) { - LLSDxmlEncode.AddMap(sb); - LLSDxmlEncode.AddElem("MonoScore", 0.0f, sb); - LLSDxmlEncode.AddElem("OwnerID", item.OwnerID, sb); - LLSDxmlEncode.AddElem("ParcelName", item.Parcel, sb); - LLSDxmlEncode.AddElem("PublicURLs", item.Urls, sb); - LLSDxmlEncode.AddElem("Size", (float)item.Bytes, sb); - LLSDxmlEncode.AddElem("TimeStamp", item.Time, sb); - LLSDxmlEncode.AddEndMap(sb); + LLSDxmlEncode2.AddMap(sb); + LLSDxmlEncode2.AddElem("MonoScore", 0.0f, sb); + LLSDxmlEncode2.AddElem("OwnerID", item.OwnerID, sb); + LLSDxmlEncode2.AddElem("ParcelName", item.Parcel, sb); + LLSDxmlEncode2.AddElem("PublicURLs", item.Urls, sb); + LLSDxmlEncode2.AddElem("Size", (float)item.Bytes, sb); + LLSDxmlEncode2.AddElem("TimeStamp", item.Time, sb); + LLSDxmlEncode2.AddEndMap(sb); } - LLSDxmlEncode.AddEndArray(sb); + LLSDxmlEncode2.AddEndArray(sb); } eq.Enqueue(eq.EndEventToBytes(sb), AgentId); @@ -4072,34 +4072,34 @@ namespace OpenSim.Region.ClientStack.LindenUDP // message template has a GroupData field AcceptNotices ignored by viewers // and a array NewGroupData also ignored - StringBuilder sb = eq.StartEvent("AvatarGroupsReply"); + osUTF8 sb = eq.StartEvent("AvatarGroupsReply"); - LLSDxmlEncode.AddArrayAndMap("AgentData", sb); - LLSDxmlEncode.AddElem("AgentID", AgentId, sb); - LLSDxmlEncode.AddElem("AvatarID", avatarID, sb); - LLSDxmlEncode.AddEndMapAndArray(sb); + LLSDxmlEncode2.AddArrayAndMap("AgentData", sb); + LLSDxmlEncode2.AddElem("AgentID", AgentId, sb); + LLSDxmlEncode2.AddElem("AvatarID", avatarID, sb); + LLSDxmlEncode2.AddEndMapAndArray(sb); bool notSameAvatar = avatarID != AgentId; if(data.Length == 0) - LLSDxmlEncode.AddEmptyArray("GroupData", sb); + LLSDxmlEncode2.AddEmptyArray("GroupData", sb); else { - LLSDxmlEncode.AddArray("GroupData", sb); + LLSDxmlEncode2.AddArray("GroupData", sb); GroupMembershipData m; for (int indx = 0; indx < data.Length; ++indx) { m = data[indx]; if(notSameAvatar && !m.ListInProfile) continue; - LLSDxmlEncode.AddMap(sb); - LLSDxmlEncode.AddElem("GroupPowers", m.GroupPowers, sb); - LLSDxmlEncode.AddElem("GroupTitle", m.GroupTitle, sb); - LLSDxmlEncode.AddElem("GroupID",m.GroupID, sb); - LLSDxmlEncode.AddElem("GroupName", m.GroupName, sb); - LLSDxmlEncode.AddElem("GroupInsigniaID", m.GroupPicture, sb); - LLSDxmlEncode.AddEndMap(sb); + LLSDxmlEncode2.AddMap(sb); + LLSDxmlEncode2.AddElem("GroupPowers", m.GroupPowers, sb); + LLSDxmlEncode2.AddElem("GroupTitle", m.GroupTitle, sb); + LLSDxmlEncode2.AddElem("GroupID",m.GroupID, sb); + LLSDxmlEncode2.AddElem("GroupName", m.GroupName, sb); + LLSDxmlEncode2.AddElem("GroupInsigniaID", m.GroupPicture, sb); + LLSDxmlEncode2.AddEndMap(sb); } - LLSDxmlEncode.AddEndArray(sb); + LLSDxmlEncode2.AddEndArray(sb); } eq.Enqueue(eq.EndEventToBytes(sb), AgentId); } @@ -6216,20 +6216,20 @@ namespace OpenSim.Region.ClientStack.LindenUDP IEventQueue eq = Scene.RequestModuleInterface(); if(eq != null) { - StringBuilder sb = eq.StartEvent("ObjectPhysicsProperties"); - LLSDxmlEncode.AddArray("ObjectData", sb); + osUTF8 sb = eq.StartEvent("ObjectPhysicsProperties"); + LLSDxmlEncode2.AddArray("ObjectData", sb); foreach (SceneObjectPart sop in needPhysics) { - LLSDxmlEncode.AddMap(sb); - LLSDxmlEncode.AddElem("LocalID",(int)sop.LocalId, sb); - LLSDxmlEncode.AddElem("Density", sop.Density, sb); - LLSDxmlEncode.AddElem("Friction", sop.Friction, sb); - LLSDxmlEncode.AddElem("GravityMultiplier", sop.GravityModifier, sb); - LLSDxmlEncode.AddElem("Restitution", sop.Restitution, sb); - LLSDxmlEncode.AddElem("PhysicsShapeType", (int)sop.PhysicsShapeType, sb); - LLSDxmlEncode.AddEndMap(sb); + LLSDxmlEncode2.AddMap(sb); + LLSDxmlEncode2.AddElem("LocalID",(int)sop.LocalId, sb); + LLSDxmlEncode2.AddElem("Density", sop.Density, sb); + LLSDxmlEncode2.AddElem("Friction", sop.Friction, sb); + LLSDxmlEncode2.AddElem("GravityMultiplier", sop.GravityModifier, sb); + LLSDxmlEncode2.AddElem("Restitution", sop.Restitution, sb); + LLSDxmlEncode2.AddElem("PhysicsShapeType", (int)sop.PhysicsShapeType, sb); + LLSDxmlEncode2.AddEndMap(sb); } - LLSDxmlEncode.AddEndArray(sb); + LLSDxmlEncode2.AddEndArray(sb); eq.Enqueue(eq.EndEventToBytes(sb), AgentId); } } @@ -6561,88 +6561,88 @@ namespace OpenSim.Region.ClientStack.LindenUDP IPrimCounts pc = lo.PrimCounts; int cap = 4 * landData.Bitmap.Length / 3 + 2048; - StringBuilder sb = eq.StartEvent("ParcelProperties", cap); + osUTF8 sb = eq.StartEvent("ParcelProperties", cap); - LLSDxmlEncode.AddArrayAndMap("ParcelData", sb); + LLSDxmlEncode2.AddArrayAndMap("ParcelData", sb); - LLSDxmlEncode.AddElem("LocalID", landData.LocalID, sb); - LLSDxmlEncode.AddElem("AABBMax", landData.AABBMax, sb); - LLSDxmlEncode.AddElem("AABBMin", landData.AABBMin, sb); - LLSDxmlEncode.AddElem("Area", landData.Area, sb); - LLSDxmlEncode.AddElem("AuctionID", (int)landData.AuctionID, sb); - LLSDxmlEncode.AddElem("AuthBuyerID", landData.AuthBuyerID, sb); - LLSDxmlEncode.AddElem("Bitmap", landData.Bitmap, sb); - LLSDxmlEncode.AddElem("Category", (int)landData.Category, sb); - LLSDxmlEncode.AddElem("ClaimDate", Util.ToDateTime(landData.ClaimDate), sb); - LLSDxmlEncode.AddElem("ClaimPrice", landData.ClaimPrice, sb); - LLSDxmlEncode.AddElem("Desc", landData.Description, sb); - LLSDxmlEncode.AddElem("ParcelFlags", landData.Flags, sb); - LLSDxmlEncode.AddElem("GroupID", landData.GroupID, sb); - LLSDxmlEncode.AddElem("GroupPrims", pc.Group, sb); - LLSDxmlEncode.AddElem("IsGroupOwned", landData.IsGroupOwned, sb); - LLSDxmlEncode.AddElem("LandingType", (int)landData.LandingType, sb); + LLSDxmlEncode2.AddElem("LocalID", landData.LocalID, sb); + LLSDxmlEncode2.AddElem("AABBMax", landData.AABBMax, sb); + LLSDxmlEncode2.AddElem("AABBMin", landData.AABBMin, sb); + LLSDxmlEncode2.AddElem("Area", landData.Area, sb); + LLSDxmlEncode2.AddElem("AuctionID", (int)landData.AuctionID, sb); + LLSDxmlEncode2.AddElem("AuthBuyerID", landData.AuthBuyerID, sb); + LLSDxmlEncode2.AddElem("Bitmap", landData.Bitmap, sb); + LLSDxmlEncode2.AddElem("Category", (int)landData.Category, sb); + LLSDxmlEncode2.AddElem("ClaimDate", Util.ToDateTime(landData.ClaimDate), sb); + LLSDxmlEncode2.AddElem("ClaimPrice", landData.ClaimPrice, sb); + LLSDxmlEncode2.AddElem("Desc", landData.Description, sb); + LLSDxmlEncode2.AddElem("ParcelFlags", landData.Flags, sb); + LLSDxmlEncode2.AddElem("GroupID", landData.GroupID, sb); + LLSDxmlEncode2.AddElem("GroupPrims", pc.Group, sb); + LLSDxmlEncode2.AddElem("IsGroupOwned", landData.IsGroupOwned, sb); + LLSDxmlEncode2.AddElem("LandingType", (int)landData.LandingType, sb); if (landData.Area > 0) - LLSDxmlEncode.AddElem("MaxPrims", parcelObjectCapacity, sb); + LLSDxmlEncode2.AddElem("MaxPrims", parcelObjectCapacity, sb); else - LLSDxmlEncode.AddElem("MaxPrims", (int)0, sb); - LLSDxmlEncode.AddElem("MediaID", landData.MediaID, sb); - LLSDxmlEncode.AddElem("MediaURL", landData.MediaURL, sb); - LLSDxmlEncode.AddElem("MediaAutoScale", landData.MediaAutoScale != 0, sb); - LLSDxmlEncode.AddElem("MusicURL", landData.MusicURL, sb); - LLSDxmlEncode.AddElem("Name", landData.Name, sb); - LLSDxmlEncode.AddElem("OtherCleanTime", landData.OtherCleanTime, sb); - LLSDxmlEncode.AddElem("OtherCount", (int)0 , sb); //TODO - LLSDxmlEncode.AddElem("OtherPrims", pc.Others, sb); - LLSDxmlEncode.AddElem("OwnerID", landData.OwnerID, sb); - LLSDxmlEncode.AddElem("OwnerPrims", pc.Owner, sb); - LLSDxmlEncode.AddElem("ParcelPrimBonus", simObjectBonusFactor, sb); - LLSDxmlEncode.AddElem("PassHours", landData.PassHours, sb); - LLSDxmlEncode.AddElem("PassPrice", landData.PassPrice, sb); - LLSDxmlEncode.AddElem("PublicCount", (int)0, sb); //TODO - LLSDxmlEncode.AddElem("RegionDenyAnonymous", (regionFlags & (uint)RegionFlags.DenyAnonymous) != 0, sb); - LLSDxmlEncode.AddElem("RegionDenyIdentified", false, sb); - LLSDxmlEncode.AddElem("RegionDenyTransacted", false, sb); - LLSDxmlEncode.AddElem("RegionPushOverride", (regionFlags & (uint)RegionFlags.RestrictPushObject) != 0, sb); - LLSDxmlEncode.AddElem("RentPrice", (int) 0, sb);; - LLSDxmlEncode.AddElem("RequestResult", request_result, sb); - LLSDxmlEncode.AddElem("SalePrice", landData.SalePrice, sb); - LLSDxmlEncode.AddElem("SelectedPrims", pc.Selected, sb); - LLSDxmlEncode.AddElem("SelfCount", (int)0, sb); //TODO - LLSDxmlEncode.AddElem("SequenceID", sequence_id, sb); + LLSDxmlEncode2.AddElem("MaxPrims", (int)0, sb); + LLSDxmlEncode2.AddElem("MediaID", landData.MediaID, sb); + LLSDxmlEncode2.AddElem("MediaURL", landData.MediaURL, sb); + LLSDxmlEncode2.AddElem("MediaAutoScale", landData.MediaAutoScale != 0, sb); + LLSDxmlEncode2.AddElem("MusicURL", landData.MusicURL, sb); + LLSDxmlEncode2.AddElem("Name", landData.Name, sb); + LLSDxmlEncode2.AddElem("OtherCleanTime", landData.OtherCleanTime, sb); + LLSDxmlEncode2.AddElem("OtherCount", (int)0 , sb); //TODO + LLSDxmlEncode2.AddElem("OtherPrims", pc.Others, sb); + LLSDxmlEncode2.AddElem("OwnerID", landData.OwnerID, sb); + LLSDxmlEncode2.AddElem("OwnerPrims", pc.Owner, sb); + LLSDxmlEncode2.AddElem("ParcelPrimBonus", simObjectBonusFactor, sb); + LLSDxmlEncode2.AddElem("PassHours", landData.PassHours, sb); + LLSDxmlEncode2.AddElem("PassPrice", landData.PassPrice, sb); + LLSDxmlEncode2.AddElem("PublicCount", (int)0, sb); //TODO + LLSDxmlEncode2.AddElem("RegionDenyAnonymous", (regionFlags & (uint)RegionFlags.DenyAnonymous) != 0, sb); + LLSDxmlEncode2.AddElem("RegionDenyIdentified", false, sb); + LLSDxmlEncode2.AddElem("RegionDenyTransacted", false, sb); + LLSDxmlEncode2.AddElem("RegionPushOverride", (regionFlags & (uint)RegionFlags.RestrictPushObject) != 0, sb); + LLSDxmlEncode2.AddElem("RentPrice", (int) 0, sb);; + LLSDxmlEncode2.AddElem("RequestResult", request_result, sb); + LLSDxmlEncode2.AddElem("SalePrice", landData.SalePrice, sb); + LLSDxmlEncode2.AddElem("SelectedPrims", pc.Selected, sb); + LLSDxmlEncode2.AddElem("SelfCount", (int)0, sb); //TODO + LLSDxmlEncode2.AddElem("SequenceID", sequence_id, sb); if (landData.SimwideArea > 0) - LLSDxmlEncode.AddElem("SimWideMaxPrims", lo.GetSimulatorMaxPrimCount(), sb); + LLSDxmlEncode2.AddElem("SimWideMaxPrims", lo.GetSimulatorMaxPrimCount(), sb); else - LLSDxmlEncode.AddElem("SimWideMaxPrims", (int)0, sb); - LLSDxmlEncode.AddElem("SimWideTotalPrims", pc.Simulator, sb); - LLSDxmlEncode.AddElem("SnapSelection", snap_selection, sb); - LLSDxmlEncode.AddElem("SnapshotID", landData.SnapshotID, sb); - LLSDxmlEncode.AddElem("Status", (int)landData.Status, sb); - LLSDxmlEncode.AddElem("TotalPrims", pc.Total, sb); - LLSDxmlEncode.AddElem("UserLocation", landData.UserLocation, sb); - LLSDxmlEncode.AddElem("UserLookAt", landData.UserLookAt, sb); - LLSDxmlEncode.AddElem("SeeAVs", landData.SeeAVs, sb); - LLSDxmlEncode.AddElem("AnyAVSounds", landData.AnyAVSounds, sb); - LLSDxmlEncode.AddElem("GroupAVSounds", landData.GroupAVSounds, sb); + LLSDxmlEncode2.AddElem("SimWideMaxPrims", (int)0, sb); + LLSDxmlEncode2.AddElem("SimWideTotalPrims", pc.Simulator, sb); + LLSDxmlEncode2.AddElem("SnapSelection", snap_selection, sb); + LLSDxmlEncode2.AddElem("SnapshotID", landData.SnapshotID, sb); + LLSDxmlEncode2.AddElem("Status", (int)landData.Status, sb); + LLSDxmlEncode2.AddElem("TotalPrims", pc.Total, sb); + LLSDxmlEncode2.AddElem("UserLocation", landData.UserLocation, sb); + LLSDxmlEncode2.AddElem("UserLookAt", landData.UserLookAt, sb); + LLSDxmlEncode2.AddElem("SeeAVs", landData.SeeAVs, sb); + LLSDxmlEncode2.AddElem("AnyAVSounds", landData.AnyAVSounds, sb); + LLSDxmlEncode2.AddElem("GroupAVSounds", landData.GroupAVSounds, sb); - LLSDxmlEncode.AddEndMapAndArray(sb); + LLSDxmlEncode2.AddEndMapAndArray(sb); - LLSDxmlEncode.AddArrayAndMap("MediaData", sb); + LLSDxmlEncode2.AddArrayAndMap("MediaData", sb); - LLSDxmlEncode.AddElem("MediaDesc", landData.MediaDescription, sb); - LLSDxmlEncode.AddElem("MediaHeight", landData.MediaHeight, sb); - LLSDxmlEncode.AddElem("MediaWidth", landData.MediaWidth, sb); - LLSDxmlEncode.AddElem("MediaLoop", landData.MediaLoop, sb); - LLSDxmlEncode.AddElem("MediaType", landData.MediaType, sb); - LLSDxmlEncode.AddElem("ObscureMedia", landData.ObscureMedia, sb); - LLSDxmlEncode.AddElem("ObscureMusic", landData.ObscureMusic, sb); + LLSDxmlEncode2.AddElem("MediaDesc", landData.MediaDescription, sb); + LLSDxmlEncode2.AddElem("MediaHeight", landData.MediaHeight, sb); + LLSDxmlEncode2.AddElem("MediaWidth", landData.MediaWidth, sb); + LLSDxmlEncode2.AddElem("MediaLoop", landData.MediaLoop, sb); + LLSDxmlEncode2.AddElem("MediaType", landData.MediaType, sb); + LLSDxmlEncode2.AddElem("ObscureMedia", landData.ObscureMedia, sb); + LLSDxmlEncode2.AddElem("ObscureMusic", landData.ObscureMusic, sb); - LLSDxmlEncode.AddEndMapAndArray(sb); + LLSDxmlEncode2.AddEndMapAndArray(sb); - LLSDxmlEncode.AddArrayAndMap("AgeVerificationBlock", sb); + LLSDxmlEncode2.AddArrayAndMap("AgeVerificationBlock", sb); - LLSDxmlEncode.AddElem("RegionDenyAgeUnverified", (regionFlags & (uint)RegionFlags.DenyAgeUnverified) != 0, sb); + LLSDxmlEncode2.AddElem("RegionDenyAgeUnverified", (regionFlags & (uint)RegionFlags.DenyAgeUnverified) != 0, sb); - LLSDxmlEncode.AddEndMapAndArray(sb); + LLSDxmlEncode2.AddEndMapAndArray(sb); bool allowenvovr = (regionFlags & (uint)RegionFlags.AllowEnvironmentOverride) != 0; int envVersion; @@ -6657,17 +6657,17 @@ namespace OpenSim.Region.ClientStack.LindenUDP else envVersion = -1; - LLSDxmlEncode.AddArrayAndMap("ParcelEnvironmentBlock", sb); - LLSDxmlEncode.AddElem("ParcelEnvironmentVersion", envVersion, sb); - LLSDxmlEncode.AddElem("RegionAllowEnvironmentOverride", allowenvovr, sb); - LLSDxmlEncode.AddEndMapAndArray(sb); + LLSDxmlEncode2.AddArrayAndMap("ParcelEnvironmentBlock", sb); + LLSDxmlEncode2.AddElem("ParcelEnvironmentVersion", envVersion, sb); + LLSDxmlEncode2.AddElem("RegionAllowEnvironmentOverride", allowenvovr, sb); + LLSDxmlEncode2.AddEndMapAndArray(sb); bool accessovr = !Scene.RegionInfo.EstateSettings.TaxFree; - LLSDxmlEncode.AddArrayAndMap("RegionAllowAccessBlock", sb); - LLSDxmlEncode.AddElem("RegionAllowAccessOverride", accessovr, sb); - LLSDxmlEncode.AddEndMapAndArray(sb); - eq.Enqueue(eq.EndEventToBytes(sb), AgentId); + LLSDxmlEncode2.AddArrayAndMap("RegionAllowAccessBlock", sb); + LLSDxmlEncode2.AddElem("RegionAllowAccessOverride", accessovr, sb); + LLSDxmlEncode2.AddEndMapAndArray(sb); + eq.Enqueue(eq.EndEventToBytes(sb), AgentId); } public void SendLandAccessListData(List accessList, uint accessFlag, int localLandID) @@ -13659,21 +13659,21 @@ namespace OpenSim.Region.ClientStack.LindenUDP return; } - StringBuilder sb = eq.StartEvent("RemoveInventoryItem"); + osUTF8 sb = eq.StartEvent("RemoveInventoryItem"); - LLSDxmlEncode.AddArrayAndMap("AgentData", sb); - LLSDxmlEncode.AddElem("AgentID", AgentId, sb); - LLSDxmlEncode.AddElem("SessionID", SessionId, sb); - LLSDxmlEncode.AddEndMapAndArray(sb); + LLSDxmlEncode2.AddArrayAndMap("AgentData", sb); + LLSDxmlEncode2.AddElem("AgentID", AgentId, sb); + LLSDxmlEncode2.AddElem("SessionID", SessionId, sb); + LLSDxmlEncode2.AddEndMapAndArray(sb); - LLSDxmlEncode.AddArray("InventoryData", sb); + LLSDxmlEncode2.AddArray("InventoryData", sb); foreach (UUID item in items) { - LLSDxmlEncode.AddMap(sb); - LLSDxmlEncode.AddElem("ItemID",item, sb); - LLSDxmlEncode.AddEndMap(sb); + LLSDxmlEncode2.AddMap(sb); + LLSDxmlEncode2.AddElem("ItemID",item, sb); + LLSDxmlEncode2.AddEndMap(sb); } - LLSDxmlEncode.AddEndArray(sb); + LLSDxmlEncode2.AddEndArray(sb); eq.Enqueue(eq.EndEventToBytes(sb), AgentId); } @@ -13688,21 +13688,21 @@ namespace OpenSim.Region.ClientStack.LindenUDP return; } - StringBuilder sb = eq.StartEvent("RemoveInventoryFolder"); + osUTF8 sb = eq.StartEvent("RemoveInventoryFolder"); - LLSDxmlEncode.AddArrayAndMap("AgentData", sb); - LLSDxmlEncode.AddElem("AgentID", AgentId, sb); - LLSDxmlEncode.AddElem("SessionID", SessionId, sb); - LLSDxmlEncode.AddEndMapAndArray(sb); + LLSDxmlEncode2.AddArrayAndMap("AgentData", sb); + LLSDxmlEncode2.AddElem("AgentID", AgentId, sb); + LLSDxmlEncode2.AddElem("SessionID", SessionId, sb); + LLSDxmlEncode2.AddEndMapAndArray(sb); - LLSDxmlEncode.AddArray("FolderData", sb); + LLSDxmlEncode2.AddArray("FolderData", sb); foreach (UUID folder in folders) { - LLSDxmlEncode.AddMap(sb); - LLSDxmlEncode.AddElem("FolderID", folder, sb); - LLSDxmlEncode.AddEndMap(sb); + LLSDxmlEncode2.AddMap(sb); + LLSDxmlEncode2.AddElem("FolderID", folder, sb); + LLSDxmlEncode2.AddEndMap(sb); } - LLSDxmlEncode.AddEndArray(sb); + LLSDxmlEncode2.AddEndArray(sb); eq.Enqueue(eq.EndEventToBytes(sb), AgentId); } @@ -13717,64 +13717,64 @@ namespace OpenSim.Region.ClientStack.LindenUDP return; } - StringBuilder sb = eq.StartEvent("BulkUpdateInventory"); + osUTF8 sb = eq.StartEvent("BulkUpdateInventory"); - LLSDxmlEncode.AddArrayAndMap("AgentData", sb); - LLSDxmlEncode.AddElem("AgentID", AgentId, sb); - LLSDxmlEncode.AddElem("TransactionID", UUID.Random(), sb); - LLSDxmlEncode.AddEndMapAndArray(sb); + LLSDxmlEncode2.AddArrayAndMap("AgentData", sb); + LLSDxmlEncode2.AddElem("AgentID", AgentId, sb); + LLSDxmlEncode2.AddElem("TransactionID", UUID.Random(), sb); + LLSDxmlEncode2.AddEndMapAndArray(sb); if(folders.Length == 0) { - LLSDxmlEncode.AddEmptyArray("FolderData", sb); + LLSDxmlEncode2.AddEmptyArray("FolderData", sb); } else { - LLSDxmlEncode.AddArray("FolderData", sb); + LLSDxmlEncode2.AddArray("FolderData", sb); foreach (InventoryFolderBase folder in folders) { - LLSDxmlEncode.AddMap(sb); - LLSDxmlEncode.AddElem("FolderID", folder.ID, sb); - LLSDxmlEncode.AddElem("ParentID", folder.ParentID, sb); - LLSDxmlEncode.AddElem("Type", (int)folder.Type, sb); - LLSDxmlEncode.AddElem("Name", folder.Name, sb); - LLSDxmlEncode.AddEndMap(sb); + LLSDxmlEncode2.AddMap(sb); + LLSDxmlEncode2.AddElem("FolderID", folder.ID, sb); + LLSDxmlEncode2.AddElem("ParentID", folder.ParentID, sb); + LLSDxmlEncode2.AddElem("Type", (int)folder.Type, sb); + LLSDxmlEncode2.AddElem("Name", folder.Name, sb); + LLSDxmlEncode2.AddEndMap(sb); } - LLSDxmlEncode.AddEndArray(sb); + LLSDxmlEncode2.AddEndArray(sb); } if(items.Length == 0) { - LLSDxmlEncode.AddEmptyArray("ItemData", sb); + LLSDxmlEncode2.AddEmptyArray("ItemData", sb); } else { - LLSDxmlEncode.AddArray("ItemData", sb); + LLSDxmlEncode2.AddArray("ItemData", sb); foreach (InventoryItemBase item in items) { - LLSDxmlEncode.AddMap(sb); - LLSDxmlEncode.AddElem("ItemID", item.ID, sb); - LLSDxmlEncode.AddElem("CallbackID", (uint)0, sb); - LLSDxmlEncode.AddElem("FolderID", item.Folder, sb); - LLSDxmlEncode.AddElem("CreatorID", item.CreatorIdAsUuid, sb); - LLSDxmlEncode.AddElem("OwnerID", item.Owner, sb); - LLSDxmlEncode.AddElem("GroupID", item.GroupID, sb); - LLSDxmlEncode.AddElem("BaseMask", item.BasePermissions, sb); - LLSDxmlEncode.AddElem("OwnerMask", item.CurrentPermissions, sb); - LLSDxmlEncode.AddElem("GroupMask", item.GroupPermissions, sb); - LLSDxmlEncode.AddElem("EveryoneMask", item.EveryOnePermissions, sb); - LLSDxmlEncode.AddElem("NextOwnerMask", item.NextPermissions, sb); - LLSDxmlEncode.AddElem("GroupOwned", item.GroupOwned, sb); - LLSDxmlEncode.AddElem("AssetID", item.AssetID, sb); - LLSDxmlEncode.AddElem("Type", item.AssetType, sb); - LLSDxmlEncode.AddElem("InvType", item.InvType, sb); - LLSDxmlEncode.AddElem("Flags", item.Flags, sb); - LLSDxmlEncode.AddElem("SaleType", item.SaleType, sb); - LLSDxmlEncode.AddElem("SalePrice", item.SalePrice, sb); - LLSDxmlEncode.AddElem("Name", item.Name, sb); - LLSDxmlEncode.AddElem("Description", item.Description, sb); - LLSDxmlEncode.AddElem("CreationDate", item.CreationDate, sb); - LLSDxmlEncode.AddElem("CRC", + LLSDxmlEncode2.AddMap(sb); + LLSDxmlEncode2.AddElem("ItemID", item.ID, sb); + LLSDxmlEncode2.AddElem("CallbackID", (uint)0, sb); + LLSDxmlEncode2.AddElem("FolderID", item.Folder, sb); + LLSDxmlEncode2.AddElem("CreatorID", item.CreatorIdAsUuid, sb); + LLSDxmlEncode2.AddElem("OwnerID", item.Owner, sb); + LLSDxmlEncode2.AddElem("GroupID", item.GroupID, sb); + LLSDxmlEncode2.AddElem("BaseMask", item.BasePermissions, sb); + LLSDxmlEncode2.AddElem("OwnerMask", item.CurrentPermissions, sb); + LLSDxmlEncode2.AddElem("GroupMask", item.GroupPermissions, sb); + LLSDxmlEncode2.AddElem("EveryoneMask", item.EveryOnePermissions, sb); + LLSDxmlEncode2.AddElem("NextOwnerMask", item.NextPermissions, sb); + LLSDxmlEncode2.AddElem("GroupOwned", item.GroupOwned, sb); + LLSDxmlEncode2.AddElem("AssetID", item.AssetID, sb); + LLSDxmlEncode2.AddElem("Type", item.AssetType, sb); + LLSDxmlEncode2.AddElem("InvType", item.InvType, sb); + LLSDxmlEncode2.AddElem("Flags", item.Flags, sb); + LLSDxmlEncode2.AddElem("SaleType", item.SaleType, sb); + LLSDxmlEncode2.AddElem("SalePrice", item.SalePrice, sb); + LLSDxmlEncode2.AddElem("Name", item.Name, sb); + LLSDxmlEncode2.AddElem("Description", item.Description, sb); + LLSDxmlEncode2.AddElem("CreationDate", item.CreationDate, sb); + LLSDxmlEncode2.AddElem("CRC", Helpers.InventoryCRC(1000, 0, (sbyte)item.InvType, (sbyte)item.AssetType, item.AssetID, item.GroupID, 100, @@ -13783,9 +13783,9 @@ namespace OpenSim.Region.ClientStack.LindenUDP (uint)PermissionMask.All, 1, (uint)PermissionMask.All, (uint)PermissionMask.All, (uint)PermissionMask.All), sb); - LLSDxmlEncode.AddEndMap(sb); + LLSDxmlEncode2.AddEndMap(sb); } - LLSDxmlEncode.AddEndArray(sb); + LLSDxmlEncode2.AddEndArray(sb); } eq.Enqueue(eq.EndEventToBytes(sb), AgentId); diff --git a/OpenSim/Region/Framework/Interfaces/IEventQueue.cs b/OpenSim/Region/Framework/Interfaces/IEventQueue.cs index 42254a7824..489b261efa 100644 --- a/OpenSim/Region/Framework/Interfaces/IEventQueue.cs +++ b/OpenSim/Region/Framework/Interfaces/IEventQueue.cs @@ -76,6 +76,7 @@ namespace OpenSim.Region.Framework.Interfaces { bool Enqueue(OSD o, UUID avatarID); bool Enqueue(byte[] o, UUID avatarID); + bool Enqueue(osUTF8 o, UUID avatarID); // void DisableSimulator(ulong handle, UUID avatarID); void EnableSimulator(ulong handle, IPEndPoint endPoint, UUID avatarID, int regionSizeX, int regionSizeY); @@ -105,9 +106,8 @@ namespace OpenSim.Region.Framework.Interfaces byte[] BuildEvent(string eventName, OSD eventBody); void partPhysicsProperties(uint localID, byte physhapetype, float density, float friction, float bounce, float gravmod, UUID avatarID); void WindlightRefreshEvent(int interpolate, UUID avatarID); - StringBuilder StartEvent(string eventName); - StringBuilder StartEvent(string eventName, int cap); - string EndEvent(StringBuilder sb); - byte[] EndEventToBytes(StringBuilder sb); + osUTF8 StartEvent(string eventName); + osUTF8 StartEvent(string eventName, int cap); + byte[] EndEventToBytes(osUTF8 sb); } } diff --git a/OpenSim/Tests/Common/Mock/TestEventQueueGetModule.cs b/OpenSim/Tests/Common/Mock/TestEventQueueGetModule.cs index c43927aecd..95430967e9 100644 --- a/OpenSim/Tests/Common/Mock/TestEventQueueGetModule.cs +++ b/OpenSim/Tests/Common/Mock/TestEventQueueGetModule.cs @@ -117,12 +117,10 @@ namespace OpenSim.Tests.Common { return true; } - /* - public void DisableSimulator(ulong handle, UUID avatarID) - { - AddEvent(avatarID, "DisableSimulator", handle); - } - */ + public bool Enqueue(osUTF8 o, UUID avatarID) + { + return true; + } public void EnableSimulator (ulong handle, IPEndPoint endPoint, UUID avatarID, int regionSizeX, int regionSizeY) { AddEvent(avatarID, "EnableSimulator", handle); @@ -207,21 +205,17 @@ namespace OpenSim.Tests.Common { } - public StringBuilder StartEvent(string eventName) + public osUTF8 StartEvent(string eventName) { return null; } - public StringBuilder StartEvent(string eventName, int cap) + public osUTF8 StartEvent(string eventName, int cap) { return null; } - public string EndEvent(StringBuilder sb) - { - return ""; - } - public byte[] EndEventToBytes(StringBuilder sb) + public byte[] EndEventToBytes(osUTF8 sb) { return new byte[0]; }