From e644212663d0b2ed94678a89c363044c5dfe8c31 Mon Sep 17 00:00:00 2001 From: UbitUmarov Date: Sat, 19 Sep 2020 16:39:30 +0100 Subject: [PATCH] update some eq events encoding --- .../Caps/EventQueue/EventQueueGetHandlers.cs | 8 ++--- .../ClientStack/Linden/UDP/LLClientView.cs | 33 ++++++++++--------- 2 files changed, 22 insertions(+), 19 deletions(-) diff --git a/OpenSim/Region/ClientStack/Linden/Caps/EventQueue/EventQueueGetHandlers.cs b/OpenSim/Region/ClientStack/Linden/Caps/EventQueue/EventQueueGetHandlers.cs index bc75b27f87..cf28ec837a 100644 --- a/OpenSim/Region/ClientStack/Linden/Caps/EventQueue/EventQueueGetHandlers.cs +++ b/OpenSim/Region/ClientStack/Linden/Caps/EventQueue/EventQueueGetHandlers.cs @@ -56,7 +56,7 @@ namespace OpenSim.Region.ClientStack.Linden public StringBuilder StartEvent(string eventName) { - StringBuilder sb = new StringBuilder(256); + StringBuilder sb = osStringBuilderCache.Acquire(); LLSDxmlEncode.AddMap(sb); LLSDxmlEncode.AddElem("message", eventName, sb); LLSDxmlEncode.AddMap("body", sb); @@ -66,7 +66,7 @@ namespace OpenSim.Region.ClientStack.Linden public StringBuilder StartEvent(string eventName, int cap) { - StringBuilder sb = new StringBuilder(cap); + StringBuilder sb = osStringBuilderCache.Acquire(); LLSDxmlEncode.AddMap(sb); LLSDxmlEncode.AddElem("message", eventName, sb); LLSDxmlEncode.AddMap("body", sb); @@ -78,14 +78,14 @@ namespace OpenSim.Region.ClientStack.Linden { LLSDxmlEncode.AddEndMap(sb); // close body LLSDxmlEncode.AddEndMap(sb); // close event - return sb.ToString(); + return osStringBuilderCache.GetStringAndRelease(sb); } public byte[] EndEventToBytes(StringBuilder sb) { LLSDxmlEncode.AddEndMap(sb); // close body LLSDxmlEncode.AddEndMap(sb); // close event - return Util.UTF8NBGetbytes(sb.ToString()); + return Util.UTF8NBGetbytes(osStringBuilderCache.GetStringAndRelease(sb)); } public virtual void EnableSimulator(ulong handle, IPEndPoint endPoint, UUID avatarID, int regionSizeX, int regionSizeY) diff --git a/OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs b/OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs index eedb5202e1..ef81133d16 100755 --- a/OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs +++ b/OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs @@ -3559,8 +3559,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP LLSDxmlEncode.AddEndArray(sb); } - OSD ev = new OSDllsdxml(eq.EndEvent(sb)); - eq.Enqueue(ev, AgentId); + eq.Enqueue(eq.EndEventToBytes(sb), AgentId); } } @@ -4099,9 +4098,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP } LLSDxmlEncode.AddEndArray(sb); } - - OSD ev = new OSDllsdxml(eq.EndEvent(sb)); - eq.Enqueue(ev, AgentId); + eq.Enqueue(eq.EndEventToBytes(sb), AgentId); } public void SendAgentGroupDataUpdate(UUID avatarID, GroupMembershipData[] data) @@ -6045,9 +6042,20 @@ namespace OpenSim.Region.ClientStack.LindenUDP } } + if (update.PropsFlags == 0) + { + update.Free(); + continue; + } + SceneObjectPart sop = (SceneObjectPart)update.Entity as SceneObjectPart; if(sop == null) + { + update.Free(); continue; + } + + used.Add(update); if ((update.PropsFlags & ObjectPropertyUpdateFlags.Family) != 0) { @@ -6129,7 +6137,6 @@ namespace OpenSim.Region.ClientStack.LindenUDP count = 1; --blocks; } - used.Add(eu); } if (count > 0) @@ -6153,7 +6160,6 @@ namespace OpenSim.Region.ClientStack.LindenUDP zc.Position = 8; CreateObjectPropertiesFamilyBlock((SceneObjectPart)eu.Entity, eu.Flags, zc); - used.Add(eu); buf.DataLength = zc.Finish(); //List tau = new List(1); //tau.Add(new ObjectPropertyUpdate((ISceneEntity) eu, (uint)eu.Flags, true, false)); @@ -6182,10 +6188,10 @@ namespace OpenSim.Region.ClientStack.LindenUDP LLSDxmlEncode.AddEndMap(sb); } LLSDxmlEncode.AddEndArray(sb); - OSDllsdxml ev = new OSDllsdxml(eq.EndEvent(sb)); - eq.Enqueue(eq.EndEvent(sb), AgentId); + eq.Enqueue(eq.EndEventToBytes(sb), AgentId); } } + foreach(EntityUpdate eu in used) eu.Free(); } @@ -13612,8 +13618,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP } LLSDxmlEncode.AddEndArray(sb); - OSD ev = new OSDllsdxml(eq.EndEvent(sb)); - eq.Enqueue(ev, AgentId); + eq.Enqueue(eq.EndEventToBytes(sb), AgentId); } public void SendRemoveInventoryFolders(UUID[] folders) @@ -13642,8 +13647,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP } LLSDxmlEncode.AddEndArray(sb); - OSD ev = new OSDllsdxml(eq.EndEvent(sb)); - eq.Enqueue(ev, AgentId); + eq.Enqueue(eq.EndEventToBytes(sb), AgentId); } public void SendBulkUpdateInventory(InventoryFolderBase[] folders, InventoryItemBase[] items) @@ -13727,8 +13731,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP LLSDxmlEncode.AddEndArray(sb); } - OSD ev = new OSDllsdxml(eq.EndEvent(sb)); - eq.Enqueue(ev, AgentId); + eq.Enqueue(eq.EndEventToBytes(sb), AgentId); } private HashSet m_outPacketsToDrop;