* Added Packets In/s, Packets Out/s and Current un_acked Packets to the SimStatsReporter
* This doesn't take into account the throttler, it just assumes the throttle limit isn't reached.ThreadPoolClientBranch
parent
314c554ed4
commit
5958192398
|
@ -399,6 +399,8 @@ namespace OpenSim.Framework
|
||||||
|
|
||||||
public delegate void FriendshipTermination(IClientAPI remoteClient,LLUUID agentID, LLUUID ExID);
|
public delegate void FriendshipTermination(IClientAPI remoteClient,LLUUID agentID, LLUUID ExID);
|
||||||
|
|
||||||
|
public delegate void PacketStats(int inPackets, int outPackets, int unAckedBytes);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -501,6 +503,7 @@ namespace OpenSim.Framework
|
||||||
event FriendActionDelegate OnApproveFriendRequest;
|
event FriendActionDelegate OnApproveFriendRequest;
|
||||||
event FriendActionDelegate OnDenyFriendRequest;
|
event FriendActionDelegate OnDenyFriendRequest;
|
||||||
event FriendshipTermination OnTerminateFriendship;
|
event FriendshipTermination OnTerminateFriendship;
|
||||||
|
event PacketStats OnPacketStats;
|
||||||
|
|
||||||
|
|
||||||
LLVector3 StartPos { get; set; }
|
LLVector3 StartPos { get; set; }
|
||||||
|
|
|
@ -63,7 +63,14 @@ namespace OpenSim.Region.ClientStack
|
||||||
// private InventoryCache m_inventoryCache;
|
// private InventoryCache m_inventoryCache;
|
||||||
private int m_cachedTextureSerial = 0;
|
private int m_cachedTextureSerial = 0;
|
||||||
private Timer m_clientPingTimer;
|
private Timer m_clientPingTimer;
|
||||||
|
|
||||||
private int m_packetsReceived = 0;
|
private int m_packetsReceived = 0;
|
||||||
|
private int m_lastpacketsSentToScene = 0;
|
||||||
|
private int m_unAckedBytes = 0;
|
||||||
|
|
||||||
|
private int m_packetsSent = 0;
|
||||||
|
private int m_lastPacketsSent = 0;
|
||||||
|
|
||||||
private int m_probesWithNoIngressPackets = 0;
|
private int m_probesWithNoIngressPackets = 0;
|
||||||
private int m_lastPacketsReceived = 0;
|
private int m_lastPacketsReceived = 0;
|
||||||
private byte[] ZeroOutBuffer = new byte[4096];
|
private byte[] ZeroOutBuffer = new byte[4096];
|
||||||
|
@ -409,6 +416,7 @@ namespace OpenSim.Region.ClientStack
|
||||||
{
|
{
|
||||||
// this will normally trigger at least one packet (ping response)
|
// this will normally trigger at least one packet (ping response)
|
||||||
SendStartPingCheck(0);
|
SendStartPingCheck(0);
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -416,6 +424,7 @@ namespace OpenSim.Region.ClientStack
|
||||||
// Something received in the meantime - we can reset the counters
|
// Something received in the meantime - we can reset the counters
|
||||||
m_probesWithNoIngressPackets = 0;
|
m_probesWithNoIngressPackets = 0;
|
||||||
m_lastPacketsReceived = m_packetsReceived;
|
m_lastPacketsReceived = m_packetsReceived;
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -566,6 +575,9 @@ namespace OpenSim.Region.ClientStack
|
||||||
public event FriendActionDelegate OnDenyFriendRequest;
|
public event FriendActionDelegate OnDenyFriendRequest;
|
||||||
public event FriendshipTermination OnTerminateFriendship;
|
public event FriendshipTermination OnTerminateFriendship;
|
||||||
|
|
||||||
|
public event PacketStats OnPacketStats;
|
||||||
|
|
||||||
|
|
||||||
#region Scene/Avatar to Client
|
#region Scene/Avatar to Client
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
@ -2245,6 +2257,7 @@ namespace OpenSim.Region.ClientStack
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
m_needAck.Add(Pack.Header.Sequence, Pack);
|
m_needAck.Add(Pack.Header.Sequence, Pack);
|
||||||
|
m_unAckedBytes += Pack.ToBytes().Length;
|
||||||
}
|
}
|
||||||
catch (Exception) // HACKY
|
catch (Exception) // HACKY
|
||||||
{
|
{
|
||||||
|
@ -2299,6 +2312,7 @@ namespace OpenSim.Region.ClientStack
|
||||||
{
|
{
|
||||||
AddAck(Pack); // this adds the need to ack this packet later
|
AddAck(Pack); // this adds the need to ack this packet later
|
||||||
|
|
||||||
|
|
||||||
if (Pack.Type != PacketType.PacketAck && Pack.Type != PacketType.LogoutRequest)
|
if (Pack.Type != PacketType.PacketAck && Pack.Type != PacketType.LogoutRequest)
|
||||||
{
|
{
|
||||||
SetPendingAcks(ref Pack);
|
SetPendingAcks(ref Pack);
|
||||||
|
@ -2343,6 +2357,7 @@ namespace OpenSim.Region.ClientStack
|
||||||
{
|
{
|
||||||
foreach (uint ack in NewPack.Header.AckList)
|
foreach (uint ack in NewPack.Header.AckList)
|
||||||
{
|
{
|
||||||
|
m_unAckedBytes -= m_needAck[ack].ToBytes().Length;
|
||||||
m_needAck.Remove(ack);
|
m_needAck.Remove(ack);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -2358,6 +2373,7 @@ namespace OpenSim.Region.ClientStack
|
||||||
{
|
{
|
||||||
foreach (PacketAckPacket.PacketsBlock block in ackPacket.Packets)
|
foreach (PacketAckPacket.PacketsBlock block in ackPacket.Packets)
|
||||||
{
|
{
|
||||||
|
m_unAckedBytes -= m_needAck[block.ID].ToBytes().Length;
|
||||||
m_needAck.Remove(block.ID);
|
m_needAck.Remove(block.ID);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -2387,6 +2403,7 @@ namespace OpenSim.Region.ClientStack
|
||||||
item.Incoming = false;
|
item.Incoming = false;
|
||||||
item.throttleType = throttlePacketType; // Packet throttle type
|
item.throttleType = throttlePacketType; // Packet throttle type
|
||||||
m_packetQueue.Enqueue(item);
|
m_packetQueue.Enqueue(item);
|
||||||
|
m_packetsSent++;
|
||||||
}
|
}
|
||||||
|
|
||||||
# region Low Level Packet Methods
|
# region Low Level Packet Methods
|
||||||
|
@ -2472,8 +2489,21 @@ namespace OpenSim.Region.ClientStack
|
||||||
|
|
||||||
protected void AckTimer_Elapsed(object sender, ElapsedEventArgs ea)
|
protected void AckTimer_Elapsed(object sender, ElapsedEventArgs ea)
|
||||||
{
|
{
|
||||||
|
|
||||||
SendAcks();
|
SendAcks();
|
||||||
ResendUnacked();
|
ResendUnacked();
|
||||||
|
SendPacketStats();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void SendPacketStats()
|
||||||
|
{
|
||||||
|
if (OnPacketStats != null)
|
||||||
|
{
|
||||||
|
OnPacketStats(m_packetsReceived - m_lastPacketsReceived, m_packetsSent - m_lastPacketsSent, m_unAckedBytes);
|
||||||
|
m_lastPacketsReceived = m_packetsReceived;
|
||||||
|
m_lastPacketsSent = m_packetsSent;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
|
@ -1228,6 +1228,7 @@ namespace OpenSim.Region.Environment.Scenes
|
||||||
|
|
||||||
client.OnGrabObject += ProcessObjectGrab;
|
client.OnGrabObject += ProcessObjectGrab;
|
||||||
client.OnAvatarPickerRequest += ProcessAvatarPickerRequest;
|
client.OnAvatarPickerRequest += ProcessAvatarPickerRequest;
|
||||||
|
client.OnPacketStats += AddPacketStats;
|
||||||
|
|
||||||
EventManager.TriggerOnNewClient(client);
|
EventManager.TriggerOnNewClient(client);
|
||||||
}
|
}
|
||||||
|
@ -1759,6 +1760,13 @@ namespace OpenSim.Region.Environment.Scenes
|
||||||
return CommsManager.GetUserFriendList(ownerID);
|
return CommsManager.GetUserFriendList(ownerID);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void AddPacketStats(int inPackets, int outPackets, int unAckedBytes)
|
||||||
|
{
|
||||||
|
m_statsReporter.AddInPackets(inPackets);
|
||||||
|
m_statsReporter.AddOutPackets(outPackets);
|
||||||
|
m_statsReporter.AddunAckedBytes(unAckedBytes);
|
||||||
|
}
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region Console Commands
|
#region Console Commands
|
||||||
|
|
|
@ -142,6 +142,7 @@ namespace SimpleApp
|
||||||
public event FriendActionDelegate OnApproveFriendRequest;
|
public event FriendActionDelegate OnApproveFriendRequest;
|
||||||
public event FriendActionDelegate OnDenyFriendRequest;
|
public event FriendActionDelegate OnDenyFriendRequest;
|
||||||
public event FriendshipTermination OnTerminateFriendship;
|
public event FriendshipTermination OnTerminateFriendship;
|
||||||
|
public event PacketStats OnPacketStats;
|
||||||
|
|
||||||
#pragma warning restore 67
|
#pragma warning restore 67
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue