cosmetics

This commit is contained in:
UbitUmarov
2023-03-10 15:43:40 +00:00
parent bb8b2ecec1
commit b3f876b9a3
3 changed files with 76 additions and 147 deletions

View File

@@ -26,14 +26,11 @@
*/
using System;
using System.Collections.Generic;
using System.Net;
using System.Threading;
using log4net;
using OpenSim.Framework;
using OpenSim.Framework.Monitoring;
using OpenMetaverse;
using OpenMetaverse.Packets;
using TokenBucket = OpenSim.Region.ClientStack.LindenUDP.TokenBucket;
@@ -81,24 +78,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
/// Controls whether information is logged about each outbound packet immediately before it is sent. For debug purposes.
/// </summary>
/// <remarks>Any level above 0 will turn on logging.</remarks>
public int ThrottleDebugLevel
{
get
{
return m_throttleDebugLevel;
}
set
{
m_throttleDebugLevel = value;
/*
m_throttleClient.DebugLevel = m_throttleDebugLevel;
foreach (TokenBucket tb in m_throttleCategories)
tb.DebugLevel = m_throttleDebugLevel;
*/
}
}
private int m_throttleDebugLevel;
public int ThrottleDebugLevel { get; set; }
/// <summary>Fired when updated networking stats are produced for this client</summary>
public event PacketStats OnPacketStats;
@@ -115,13 +95,13 @@ namespace OpenSim.Region.ClientStack.LindenUDP
/// <summary>Circuit code that this client is connected on</summary>
public readonly uint CircuitCode;
/// <summary>Sequence numbers of packets we've received (for duplicate checking)</summary>
public IncomingPacketHistoryCollection PacketArchive = new IncomingPacketHistoryCollection(1024);
public IncomingPacketHistoryCollection PacketArchive = new(1024);
/// <summary>Packets we have sent that need to be ACKed by the client</summary>
public UnackedPacketCollection NeedAcks = new UnackedPacketCollection();
public UnackedPacketCollection NeedAcks = new();
/// <summary>ACKs that are queued up, waiting to be sent to the client</summary>
public DoubleLocklessQueue<uint> PendingAcks = new DoubleLocklessQueue<uint>();
public DoubleLocklessQueue<uint> PendingAcks = new();
public int AckStalls;
@@ -167,7 +147,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
private double m_nextOnQueueEmpty = 0;
/// <summary>Throttle bucket for this agent's connection</summary>
private AdaptiveTokenBucket m_throttleClient;
private readonly AdaptiveTokenBucket m_throttleClient;
public AdaptiveTokenBucket FlowThrottle
{
get { return m_throttleClient; }
@@ -176,22 +156,22 @@ namespace OpenSim.Region.ClientStack.LindenUDP
/// <summary>Throttle buckets for each packet category</summary>
private readonly TokenBucket[] m_throttleCategories;
/// <summary>Outgoing queues for throttled packets</summary>
private DoubleLocklessQueue<OutgoingPacket>[] m_packetOutboxes = new DoubleLocklessQueue<OutgoingPacket>[THROTTLE_CATEGORY_COUNT];
private readonly DoubleLocklessQueue<OutgoingPacket>[] m_packetOutboxes = new DoubleLocklessQueue<OutgoingPacket>[THROTTLE_CATEGORY_COUNT];
/// <summary>A container that can hold one packet for each outbox, used to store
/// dequeued packets that are being held for throttling</summary>
private OutgoingPacket[] m_nextPackets = new OutgoingPacket[THROTTLE_CATEGORY_COUNT];
private readonly OutgoingPacket[] m_nextPackets = new OutgoingPacket[THROTTLE_CATEGORY_COUNT];
/// <summary>A reference to the LLUDPServer that is managing this client</summary>
private readonly LLUDPServer m_udpServer;
/// <summary>Caches packed throttle information</summary>
private byte[] m_packedThrottles;
private int m_defaultRTO = 1000; // 1sec is the recommendation in the RFC
private int m_maxRTO = 3000;
private int m_minRTO = 250;
private readonly int m_defaultRTO = 1000; // 1sec is the recommendation in the RFC
private readonly int m_maxRTO = 3000;
private readonly int m_minRTO = 250;
private float m_burstTime;
private int m_maxRate;
private readonly float m_burstTime;
private readonly int m_maxRate;
public double m_lastStartpingTimeMS;
public int m_pingMS;
@@ -208,7 +188,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
}
}
private ClientInfo m_info = new ClientInfo();
private readonly ClientInfo m_info = new();
/// <summary>
/// Default constructor
@@ -575,7 +555,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
/// <returns>True if any packets were sent, otherwise false</returns>
public bool DequeueOutgoing()
{
// if (m_deliverPackets == false) return false;
//if (m_deliverPackets == false) return false;
OutgoingPacket packet;
DoubleLocklessQueue<OutgoingPacket> queue;
@@ -586,9 +566,9 @@ namespace OpenSim.Region.ClientStack.LindenUDP
// do resends
packet = m_nextPackets[0];
if (packet != null)
if (packet is not null)
{
if (packet.Buffer != null)
if (packet.Buffer is not null)
{
if (m_throttleCategories[0].RemoveTokens(packet.Buffer.DataLength))
{
@@ -604,13 +584,13 @@ namespace OpenSim.Region.ClientStack.LindenUDP
else
{
queue = m_packetOutboxes[0];
if (queue != null)
if (queue is not null)
{
if(queue.Dequeue(out packet))
{
// A packet was pulled off the queue. See if we have
// enough tokens in the bucket to send it out
if (packet.Buffer != null)
if (packet.Buffer is not null)
{
if (m_throttleCategories[0].RemoveTokens(packet.Buffer.DataLength))
{
@@ -643,9 +623,9 @@ namespace OpenSim.Region.ClientStack.LindenUDP
//queueDebugOutput += m_packetOutboxes[i].Count + " "; // Serious debug business
packet = m_nextPackets[i];
if (packet != null)
if (packet is not null)
{
if(packet.Buffer == null)
if(packet.Buffer is null)
{
if (m_packetOutboxes[i].Count < 5)
emptyCategories |= CategoryToFlag(i);
@@ -671,7 +651,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
queue = m_packetOutboxes[i];
if(queue.Dequeue(out packet))
{
if (packet.Buffer == null)
if (packet.Buffer is null)
{
// packet canceled elsewhere (by a ack for example)
if (queue.Count < 5)
@@ -735,7 +715,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
/// <param name="categories">Throttle categories to fire the callback for</param>
private void BeginFireQueueEmpty(ThrottleOutPacketTypeFlags categories)
{
if (!QueueEmptyRunning && HasUpdates(categories) && OnQueueEmpty != null)
if (!QueueEmptyRunning && HasUpdates(categories) && OnQueueEmpty is not null)
{
double start = Util.GetTimeStampMS();
if (start < m_nextOnQueueEmpty)
@@ -782,7 +762,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
public void FireQueueEmpty(object o)
{
QueueEmpty callback = OnQueueEmpty;
if (callback != null)
if (callback is not null)
{
ThrottleOutPacketTypeFlags categories = (ThrottleOutPacketTypeFlags)o;
try { callback(categories); }
@@ -836,7 +816,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
public class DoubleLocklessQueue<T> : OpenSim.Framework.LocklessQueue<T>
{
OpenSim.Framework.LocklessQueue<T> highQueue = new OpenSim.Framework.LocklessQueue<T>();
readonly OpenSim.Framework.LocklessQueue<T> highQueue = new();
public override int Count
{

View File

@@ -37,8 +37,8 @@ namespace OpenSim.Region.ClientStack.LindenUDP
{
public class LLUDPServerCommands
{
private ICommandConsole m_console;
private LLUDPServer m_udpServer;
private readonly ICommandConsole m_console;
private readonly LLUDPServer m_udpServer;
public LLUDPServerCommands(ICommandConsole console, LLUDPServer udpServer)
{
@@ -219,11 +219,12 @@ namespace OpenSim.Region.ClientStack.LindenUDP
private void HandleShowServerThrottlesCommand(string module, string[] args)
{
if (SceneManager.Instance.CurrentScene != null && SceneManager.Instance.CurrentScene != m_udpServer.Scene)
if (SceneManager.Instance.CurrentScene is not null &&
SceneManager.Instance.CurrentScene != m_udpServer.Scene)
return;
m_console.Output("Throttles for {0}", m_udpServer.Scene.Name);
ConsoleDisplayList cdl = new ConsoleDisplayList();
ConsoleDisplayList cdl = new();
cdl.AddRow("Adaptive throttles", m_udpServer.ThrottleRates.AdaptiveThrottlesEnabled);
long maxSceneDripRate = (long)m_udpServer.Throttle.MaxDripRate;
@@ -243,8 +244,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
private string GetServerThrottlesReport(LLUDPServer udpServer)
{
StringBuilder report = new StringBuilder();
StringBuilder report = new();
report.AppendFormat(
"{0,7} {1,8} {2,7} {3,7} {4,7} {5,7} {6,9} {7,7}\n",
"Total",
@@ -301,8 +301,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
return;
}
int level;
if (!ConsoleUtil.TryParseConsoleInt(MainConsole.Instance, args[4], out level))
if (!ConsoleUtil.TryParseConsoleInt(MainConsole.Instance, args[4], out int level))
return;
string firstName = args[5];
@@ -336,8 +335,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
return;
}
int level;
if (!ConsoleUtil.TryParseConsoleInt(MainConsole.Instance, args[4], out level))
if (!ConsoleUtil.TryParseConsoleInt(MainConsole.Instance, args[4], out int level))
return;
string firstName = null;
@@ -391,8 +389,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
if (param == "adaptive")
{
bool newValue;
if (!ConsoleUtil.TryParseConsoleBool(MainConsole.Instance, rawValue, out newValue))
if (!ConsoleUtil.TryParseConsoleBool(MainConsole.Instance, rawValue, out bool newValue))
return;
m_udpServer.Scene.ForEachScenePresence(sp =>
@@ -405,15 +402,14 @@ namespace OpenSim.Region.ClientStack.LindenUDP
LLUDPClient udpClient = ((LLClientView)sp.ControllingClient).UDPClient;
udpClient.FlowThrottle.AdaptiveEnabled = newValue;
// udpClient.FlowThrottle.MaxDripRate = 0;
// udpClient.FlowThrottle.AdjustedDripRate = 0;
//udpClient.FlowThrottle.MaxDripRate = 0;
//udpClient.FlowThrottle.AdjustedDripRate = 0;
}
});
}
else if (param == "request")
{
int newValue;
if (!ConsoleUtil.TryParseConsoleInt(MainConsole.Instance, rawValue, out newValue))
if (!ConsoleUtil.TryParseConsoleInt(MainConsole.Instance, rawValue, out int newValue))
return;
int newCurrentThrottleKbps = newValue * 1000 / 8;
@@ -433,8 +429,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
}
else if (param == "max")
{
int newValue;
if (!ConsoleUtil.TryParseConsoleInt(MainConsole.Instance, rawValue, out newValue))
if (!ConsoleUtil.TryParseConsoleInt(MainConsole.Instance, rawValue, out int newValue))
return;
int newThrottleMaxKbps = newValue * 1000 / 8;
@@ -488,7 +483,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
LLUDPClient udpClient = ((LLClientView)sp.ControllingClient).UDPClient;
ConsoleDisplayList cdl = new ConsoleDisplayList();
ConsoleDisplayList cdl = new();
cdl.AddRow("adaptive", udpClient.FlowThrottle.AdaptiveEnabled);
cdl.AddRow("current", string.Format("{0} kbps", udpClient.FlowThrottle.DripRate * 8 / 1000));
cdl.AddRow("request", string.Format("{0} kbps", udpClient.FlowThrottle.RequestedDripRate * 8 / 1000));
@@ -501,11 +496,12 @@ namespace OpenSim.Region.ClientStack.LindenUDP
private void HandleGetCommand(string module, string[] args)
{
if (SceneManager.Instance.CurrentScene != null && SceneManager.Instance.CurrentScene != m_udpServer.Scene)
if (SceneManager.Instance.CurrentScene is not null &&
SceneManager.Instance.CurrentScene != m_udpServer.Scene)
return;
m_console.Output("Debug settings for {0}", m_udpServer.Scene.Name);
ConsoleDisplayList cdl = new ConsoleDisplayList();
ConsoleDisplayList cdl = new();
long maxSceneDripRate = (long)m_udpServer.Throttle.MaxDripRate;
cdl.AddRow(
@@ -612,14 +608,15 @@ namespace OpenSim.Region.ClientStack.LindenUDP
*/
private void HandlePacketCommand(string module, string[] args)
{
if (SceneManager.Instance.CurrentScene != null && SceneManager.Instance.CurrentScene != m_udpServer.Scene)
if (SceneManager.Instance.CurrentScene is not null &&
SceneManager.Instance.CurrentScene != m_udpServer.Scene)
return;
bool setAsDefaultLevel = false;
bool setAll = false;
OptionSet optionSet = new OptionSet()
.Add("default", o => setAsDefaultLevel = (o != null))
.Add("all", o => setAll = (o != null));
.Add("default", o => setAsDefaultLevel = (o is not null))
.Add("all", o => setAll = (o is not null));
List<string> filteredArgs = optionSet.Parse(args);
string name = null;
@@ -639,8 +636,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
if (filteredArgs.Count > 3)
{
int newDebug;
if (int.TryParse(filteredArgs[3], out newDebug))
if (int.TryParse(filteredArgs[3], out int newDebug))
{
if (setAsDefaultLevel || setAll)
{
@@ -653,28 +649,28 @@ namespace OpenSim.Region.ClientStack.LindenUDP
if (setAll)
{
m_udpServer.Scene.ForEachScenePresence(sp =>
{
MainConsole.Instance.Output(
"Packet debug for {0} ({1}) set to {2} in {3}",
sp.Name, sp.IsChildAgent ? "child" : "root", newDebug, m_udpServer.Scene.Name);
{
MainConsole.Instance.Output(
"Packet debug for {0} ({1}) set to {2} in {3}",
sp.Name, sp.IsChildAgent ? "child" : "root", newDebug, m_udpServer.Scene.Name);
sp.ControllingClient.DebugPacketLevel = newDebug;
});
sp.ControllingClient.DebugPacketLevel = newDebug;
});
}
}
else
{
m_udpServer.Scene.ForEachScenePresence(sp =>
{
if (name == null || sp.Name == name)
{
MainConsole.Instance.Output(
"Packet debug for {0} ({1}) set to {2} in {3}",
sp.Name, sp.IsChildAgent ? "child" : "root", newDebug, m_udpServer.Scene.Name);
{
if (name is null || sp.Name == name)
{
MainConsole.Instance.Output(
"Packet debug for {0} ({1}) set to {2} in {3}",
sp.Name, sp.IsChildAgent ? "child" : "root", newDebug, m_udpServer.Scene.Name);
sp.ControllingClient.DebugPacketLevel = newDebug;
}
});
sp.ControllingClient.DebugPacketLevel = newDebug;
}
});
}
}
else
@@ -686,7 +682,8 @@ namespace OpenSim.Region.ClientStack.LindenUDP
private void HandleDropCommand(string module, string[] args)
{
if (SceneManager.Instance.CurrentScene != null && SceneManager.Instance.CurrentScene != m_udpServer.Scene)
if (SceneManager.Instance.CurrentScene is not null &&
SceneManager.Instance.CurrentScene != m_udpServer.Scene)
return;
if (args.Length != 6)
@@ -759,7 +756,8 @@ namespace OpenSim.Region.ClientStack.LindenUDP
private void HandleStopCommand(string module, string[] args)
{
if (SceneManager.Instance.CurrentScene != null && SceneManager.Instance.CurrentScene != m_udpServer.Scene)
if (SceneManager.Instance.CurrentScene is not null &&
SceneManager.Instance.CurrentScene != m_udpServer.Scene)
return;
if (args.Length != 4)
@@ -779,7 +777,8 @@ namespace OpenSim.Region.ClientStack.LindenUDP
private void HandleAgentUpdateCommand(string module, string[] args)
{
if (SceneManager.Instance.CurrentScene != null && SceneManager.Instance.CurrentScene != m_udpServer.Scene)
if (SceneManager.Instance.CurrentScene is not null &&
SceneManager.Instance.CurrentScene != m_udpServer.Scene)
return;
m_udpServer.DiscardInboundAgentUpdates = !m_udpServer.DiscardInboundAgentUpdates;
@@ -790,7 +789,8 @@ namespace OpenSim.Region.ClientStack.LindenUDP
private void HandleStatusCommand(string module, string[] args)
{
if (SceneManager.Instance.CurrentScene != null && SceneManager.Instance.CurrentScene != m_udpServer.Scene)
if (SceneManager.Instance.CurrentScene is not null &&
SceneManager.Instance.CurrentScene != m_udpServer.Scene)
return;
MainConsole.Instance.Output(
@@ -805,7 +805,8 @@ namespace OpenSim.Region.ClientStack.LindenUDP
private void HandleOqreCommand(string module, string[] args)
{
if (SceneManager.Instance.CurrentScene != null && SceneManager.Instance.CurrentScene != m_udpServer.Scene)
if (SceneManager.Instance.CurrentScene is not null &&
SceneManager.Instance.CurrentScene != m_udpServer.Scene)
return;
if (args.Length != 4)

View File

@@ -104,56 +104,6 @@ namespace OpenMetaverse
get { return m_udpPort; }
}
#region PacketDropDebugging
/// <summary>
/// For debugging purposes only... parameters for a simplified
/// model of packet loss with bursts, overall drop rate should
/// be roughly 1 - m_dropLengthProbability / (m_dropProbabiliy + m_dropLengthProbability)
/// which is about 1% for parameters 0.0015 and 0.15
/// </summary>
private double m_dropProbability = 0.0030;
private double m_dropLengthProbability = 0.15;
private bool m_dropState = false;
/// <summary>
/// For debugging purposes only... parameters to control the time
/// duration over which packet loss bursts can occur, if no packets
/// have been sent for m_dropResetTicks milliseconds, then reset the
/// state of the packet dropper to its default.
/// </summary>
private int m_dropLastTick = 0;
private int m_dropResetTicks = 500;
/// <summary>
/// Debugging code used to simulate dropped packets with bursts
/// </summary>
private bool DropOutgoingPacket()
{
double rnum = Random.Shared.NextDouble();
// if the connection has been idle for awhile (more than m_dropResetTicks) then
// reset the state to the default state, don't continue a burst
int curtick = Util.EnvironmentTickCount();
if (Util.EnvironmentTickCountSubtract(curtick, m_dropLastTick) > m_dropResetTicks)
m_dropState = false;
m_dropLastTick = curtick;
// if we are dropping packets, then the probability of dropping
// this packet is the probability that we stay in the burst
if (m_dropState)
{
m_dropState = (rnum < (1.0 - m_dropLengthProbability)) ? true : false;
}
else
{
m_dropState = (rnum < m_dropProbability) ? true : false;
}
return m_dropState;
}
#endregion PacketDropDebugging
/// <summary>
/// Default constructor
/// </summary>
@@ -172,7 +122,7 @@ namespace OpenMetaverse
~OpenSimUDPBase()
{
if(m_udpSocket !=null)
if(m_udpSocket is not null)
try { m_udpSocket.Close(); } catch { }
}
@@ -235,12 +185,8 @@ namespace OpenMetaverse
const int SIO_UDP_CONNRESET = -1744830452;
IPEndPoint ipep = new IPEndPoint(m_localBindAddress, m_udpPort);
m_udpSocket = new Socket(
AddressFamily.InterNetwork,
SocketType.Dgram,
ProtocolType.Udp);
m_udpSocket = new Socket( AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
try
{
@@ -278,6 +224,7 @@ namespace OpenMetaverse
if (recvBufferSize != 0)
m_udpSocket.ReceiveBufferSize = recvBufferSize;
IPEndPoint ipep = new(m_localBindAddress, m_udpPort);
m_udpSocket.Bind(ipep);
if (m_udpPort == 0)
@@ -423,6 +370,7 @@ namespace OpenMetaverse
UdpReceives, se.ErrorCode),
se);
}
catch(ObjectDisposedException) { }
catch (Exception e)
{
m_log.Error(
@@ -438,7 +386,7 @@ namespace OpenMetaverse
public void SyncSend(UDPPacketBuffer buf)
{
if(buf.RemoteEndPoint == null)
if(buf.RemoteEndPoint is null)
return; // already expired
try
{