update some eq events encoding

This commit is contained in:
UbitUmarov
2020-09-19 16:39:30 +01:00
parent 1cea3181dc
commit e644212663
2 changed files with 22 additions and 19 deletions

View File

@@ -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)

View File

@@ -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<EntityUpdate> tau = new List<EntityUpdate>(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<string> m_outPacketsToDrop;