mirror of
https://github.com/opensim/opensim.git
synced 2026-08-04 16:22:50 +08:00
Merge branch 'master' into careminster-presence-refactor
This commit is contained in:
@@ -3493,9 +3493,10 @@ namespace OpenSim.Region.ClientStack.LindenUDP
|
||||
ani.AnimationList[i].AnimSequenceID = seqs[i];
|
||||
|
||||
ani.AnimationSourceList[i] = new AvatarAnimationPacket.AnimationSourceListBlock();
|
||||
ani.AnimationSourceList[i].ObjectID = objectIDs[i];
|
||||
if (objectIDs[i] == UUID.Zero)
|
||||
ani.AnimationSourceList[i].ObjectID = sourceAgentId;
|
||||
if (objectIDs[i].Equals(sourceAgentId))
|
||||
ani.AnimationSourceList[i].ObjectID = UUID.Zero;
|
||||
else
|
||||
ani.AnimationSourceList[i].ObjectID = objectIDs[i];
|
||||
}
|
||||
ani.Header.Reliable = false;
|
||||
OutPacket(ani, ThrottleOutPacketType.Task);
|
||||
|
||||
@@ -585,8 +585,6 @@ namespace OpenSim.Region.ClientStack.LindenUDP
|
||||
|
||||
// Stats tracking
|
||||
Interlocked.Increment(ref udpClient.PacketsSent);
|
||||
if (isReliable)
|
||||
Interlocked.Add(ref udpClient.UnackedBytes, outgoingPacket.Buffer.DataLength);
|
||||
|
||||
// Put the UDP payload on the wire
|
||||
AsyncBeginSend(buffer);
|
||||
@@ -859,9 +857,9 @@ namespace OpenSim.Region.ClientStack.LindenUDP
|
||||
// Acknowledge the UseCircuitCode packet
|
||||
SendAckImmediate(remoteEndPoint, packet.Header.Sequence);
|
||||
|
||||
m_log.DebugFormat(
|
||||
"[LLUDPSERVER]: Handling UseCircuitCode request from {0} took {1}ms",
|
||||
buffer.RemoteEndPoint, (DateTime.Now - startTime).Milliseconds);
|
||||
// m_log.DebugFormat(
|
||||
// "[LLUDPSERVER]: Handling UseCircuitCode request from {0} took {1}ms",
|
||||
// buffer.RemoteEndPoint, (DateTime.Now - startTime).Milliseconds);
|
||||
}
|
||||
|
||||
private void SendAckImmediate(IPEndPoint remoteEndpoint, uint sequenceNumber)
|
||||
|
||||
@@ -28,6 +28,7 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Net;
|
||||
using System.Threading;
|
||||
using OpenMetaverse;
|
||||
|
||||
namespace OpenSim.Region.ClientStack.LindenUDP
|
||||
@@ -77,6 +78,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
|
||||
public void Add(OutgoingPacket packet)
|
||||
{
|
||||
m_pendingAdds.Enqueue(packet);
|
||||
Interlocked.Add(ref packet.Client.UnackedBytes, packet.Buffer.DataLength);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -139,46 +141,31 @@ namespace OpenSim.Region.ClientStack.LindenUDP
|
||||
private void ProcessQueues()
|
||||
{
|
||||
// Process all the pending adds
|
||||
|
||||
OutgoingPacket pendingAdd;
|
||||
if (m_pendingAdds != null)
|
||||
{
|
||||
while (m_pendingAdds.TryDequeue(out pendingAdd))
|
||||
{
|
||||
if (pendingAdd != null && m_packets != null)
|
||||
{
|
||||
m_packets[pendingAdd.SequenceNumber] = pendingAdd;
|
||||
}
|
||||
}
|
||||
}
|
||||
while (m_pendingAdds.TryDequeue(out pendingAdd))
|
||||
m_packets[pendingAdd.SequenceNumber] = pendingAdd;
|
||||
|
||||
// Process all the pending removes, including updating statistics and round-trip times
|
||||
PendingAck pendingRemove;
|
||||
OutgoingPacket ackedPacket;
|
||||
if (m_pendingRemoves != null)
|
||||
while (m_pendingRemoves.TryDequeue(out pendingRemove))
|
||||
{
|
||||
while (m_pendingRemoves.TryDequeue(out pendingRemove))
|
||||
if (m_packets.TryGetValue(pendingRemove.SequenceNumber, out ackedPacket))
|
||||
{
|
||||
if (m_pendingRemoves != null && m_packets != null)
|
||||
m_packets.Remove(pendingRemove.SequenceNumber);
|
||||
|
||||
// Update stats
|
||||
Interlocked.Add(ref ackedPacket.Client.UnackedBytes, -ackedPacket.Buffer.DataLength);
|
||||
|
||||
if (!pendingRemove.FromResend)
|
||||
{
|
||||
if (m_packets.TryGetValue(pendingRemove.SequenceNumber, out ackedPacket))
|
||||
{
|
||||
m_packets.Remove(pendingRemove.SequenceNumber);
|
||||
|
||||
// Update stats
|
||||
System.Threading.Interlocked.Add(ref ackedPacket.Client.UnackedBytes, -ackedPacket.Buffer.DataLength);
|
||||
|
||||
if (!pendingRemove.FromResend)
|
||||
{
|
||||
// Calculate the round-trip time for this packet and its ACK
|
||||
int rtt = pendingRemove.RemoveTime - ackedPacket.TickCount;
|
||||
if (rtt > 0)
|
||||
ackedPacket.Client.UpdateRoundTrip(rtt);
|
||||
}
|
||||
}
|
||||
// Calculate the round-trip time for this packet and its ACK
|
||||
int rtt = pendingRemove.RemoveTime - ackedPacket.TickCount;
|
||||
if (rtt > 0)
|
||||
ackedPacket.Client.UpdateRoundTrip(rtt);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user