diff --git a/OpenSim/Region/ClientStack/Linden/UDP/LLUDPServer.cs b/OpenSim/Region/ClientStack/Linden/UDP/LLUDPServer.cs index 9dfe0e98b5..8ca0b1fd5e 100644 --- a/OpenSim/Region/ClientStack/Linden/UDP/LLUDPServer.cs +++ b/OpenSim/Region/ClientStack/Linden/UDP/LLUDPServer.cs @@ -243,15 +243,13 @@ namespace OpenSim.Region.ClientStack.LindenUDP /// Incoming packets that are awaiting handling private OpenMetaverse.BlockingQueue packetInbox = new OpenMetaverse.BlockingQueue(); - /// - //private UDPClientCollection m_clients = new UDPClientCollection(); /// Bandwidth throttle for this UDP server - protected TokenBucket m_throttle; + public TokenBucket Throttle { get; private set; } /// /// Gets the maximum total drip rate allowed to all clients. /// - public long MaxTotalDripRate { get { return m_throttle.RequestedDripRate; } } + public long MaxTotalDripRate { get { return Throttle.RequestedDripRate; } } /// Bandwidth throttle rates for this UDP server public ThrottleRates ThrottleRates { get; private set; } @@ -449,7 +447,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP // = new TokenBucket( // string.Format("server throttle bucket for {0}", Scene.Name), null, sceneThrottleBps); - m_throttle = new TokenBucket("server throttle bucket", null, sceneThrottleBps); + Throttle = new TokenBucket("server throttle bucket", null, sceneThrottleBps); ThrottleRates = new ThrottleRates(configSource); @@ -1761,7 +1759,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP { if (!Scene.TryGetClient(agentID, out client)) { - LLUDPClient udpClient = new LLUDPClient(this, ThrottleRates, m_throttle, circuitCode, agentID, remoteEndPoint, m_defaultRTO, m_maxRTO); + LLUDPClient udpClient = new LLUDPClient(this, ThrottleRates, Throttle, circuitCode, agentID, remoteEndPoint, m_defaultRTO, m_maxRTO); client = new LLClientView(Scene, this, udpClient, sessionInfo, agentID, sessionID, circuitCode); client.OnLogout += LogoutHandler; diff --git a/OpenSim/Region/ClientStack/Linden/UDP/LLUDPServerCommands.cs b/OpenSim/Region/ClientStack/Linden/UDP/LLUDPServerCommands.cs index 438331a8a7..f0f186a3d0 100644 --- a/OpenSim/Region/ClientStack/Linden/UDP/LLUDPServerCommands.cs +++ b/OpenSim/Region/ClientStack/Linden/UDP/LLUDPServerCommands.cs @@ -153,6 +153,15 @@ namespace OpenSim.Region.ClientStack.LindenUDP "Only current setting is 'adaptive' which must be 'true' or 'false'", HandleThrottleSetCommand); + m_console.Commands.AddCommand( + "Debug", + false, + "debug lludp set", + "debug lludp set ", + "Set a parameter for the server.", + "Only current setting is 'scene-throttle-max' which sets the current max cumulative kbit/s provided for this scene to clients", + HandleSetCommand); + m_console.Commands.AddCommand( "Debug", false, @@ -363,6 +372,33 @@ namespace OpenSim.Region.ClientStack.LindenUDP }); } + private void HandleSetCommand(string module, string[] args) + { + if (SceneManager.Instance.CurrentScene != null && SceneManager.Instance.CurrentScene != m_udpServer.Scene) + return; + + if (args.Length != 5) + { + MainConsole.Instance.OutputFormat("Usage: debug lludp set "); + return; + } + + string param = args[3]; + string rawValue = args[4]; + + int newValue; + + if (param == "scene-throttle-max") + { + if (!ConsoleUtil.TryParseConsoleInt(MainConsole.Instance, rawValue, out newValue)) + return; + + m_udpServer.Throttle.RequestedDripRate = newValue * 8 * 1000; + } + + m_console.OutputFormat("{0} set to {1} in {2}", param, rawValue, m_udpServer.Scene.Name); + } + private void HandlePacketCommand(string module, string[] args) { if (SceneManager.Instance.CurrentScene != null && SceneManager.Instance.CurrentScene != m_udpServer.Scene)