aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
-rw-r--r--OpenSim/Framework/RegionInfo.cs12
-rw-r--r--OpenSim/Region/CoreModules/World/Region/RegionCommandsModule.cs88
2 files changed, 91 insertions, 9 deletions
diff --git a/OpenSim/Framework/RegionInfo.cs b/OpenSim/Framework/RegionInfo.cs
index 5911ade..cae5e51 100644
--- a/OpenSim/Framework/RegionInfo.cs
+++ b/OpenSim/Framework/RegionInfo.cs
@@ -127,7 +127,6 @@ namespace OpenSim.Framework
127 private int m_objectCapacity = 0; 127 private int m_objectCapacity = 0;
128 private int m_maxPrimsPerUser = -1; 128 private int m_maxPrimsPerUser = -1;
129 private int m_linksetCapacity = 0; 129 private int m_linksetCapacity = 0;
130 private int m_agentCapacity = 0;
131 private string m_regionType = String.Empty; 130 private string m_regionType = String.Empty;
132 private RegionLightShareData m_windlight = new RegionLightShareData(); 131 private RegionLightShareData m_windlight = new RegionLightShareData();
133 protected uint m_httpPort; 132 protected uint m_httpPort;
@@ -351,10 +350,7 @@ namespace OpenSim.Framework
351 get { return m_linksetCapacity; } 350 get { return m_linksetCapacity; }
352 } 351 }
353 352
354 public int AgentCapacity 353 public int AgentCapacity { get; set; }
355 {
356 get { return m_agentCapacity; }
357 }
358 354
359 public byte AccessLevel 355 public byte AccessLevel
360 { 356 {
@@ -748,7 +744,7 @@ namespace OpenSim.Framework
748 744
749 #endregion 745 #endregion
750 746
751 m_agentCapacity = config.GetInt("MaxAgents", 100); 747 AgentCapacity = config.GetInt("MaxAgents", 100);
752 allKeys.Remove("MaxAgents"); 748 allKeys.Remove("MaxAgents");
753 749
754 // Multi-tenancy 750 // Multi-tenancy
@@ -864,8 +860,8 @@ namespace OpenSim.Framework
864 if (m_linksetCapacity > 0) 860 if (m_linksetCapacity > 0)
865 config.Set("LinksetPrims", m_linksetCapacity); 861 config.Set("LinksetPrims", m_linksetCapacity);
866 862
867 if (m_agentCapacity > 0) 863 if (AgentCapacity > 0)
868 config.Set("MaxAgents", m_agentCapacity); 864 config.Set("MaxAgents", AgentCapacity);
869 865
870 if (ScopeID != UUID.Zero) 866 if (ScopeID != UUID.Zero)
871 config.Set("ScopeID", ScopeID.ToString()); 867 config.Set("ScopeID", ScopeID.ToString());
diff --git a/OpenSim/Region/CoreModules/World/Region/RegionCommandsModule.cs b/OpenSim/Region/CoreModules/World/Region/RegionCommandsModule.cs
index 95eca39..710c8da 100644
--- a/OpenSim/Region/CoreModules/World/Region/RegionCommandsModule.cs
+++ b/OpenSim/Region/CoreModules/World/Region/RegionCommandsModule.cs
@@ -87,7 +87,26 @@ namespace OpenSim.Region.CoreModules.World.Objects.Commands
87 "Regions", false, "show region", 87 "Regions", false, "show region",
88 "show region", 88 "show region",
89 "Show control information for the currently selected region (host name, max physical prim size, etc).", 89 "Show control information for the currently selected region (host name, max physical prim size, etc).",
90 "A synonym for \"region get\"",
90 HandleShowRegion); 91 HandleShowRegion);
92
93 m_console.Commands.AddCommand(
94 "Regions", false, "region get",
95 "region get",
96 "Show control information for the currently selected region (host name, max physical prim size, etc).",
97 "Some parameters can be set with the \"region set\" command.\n"
98 + "Others must be changed via a viewer (usually via the region/estate dialog box).",
99 HandleShowRegion);
100
101 m_console.Commands.AddCommand(
102 "Regions", false, "region set",
103 "region get",
104 "Set control information for the currently selected region.",
105 "Currently, the following parameters can be set:\n"
106 + "agent-limit <int> - Current root agent limit. This is persisted over restart.\n"
107 + "max-agent-limit <int> - Maximum root agent limit. agent-limit cannot exceed this."
108 + " This is not persisted over restart - to set it every time you must add a MaxAgents entry to your regions file.",
109 HandleRegionSet);
91 } 110 }
92 111
93 public void RemoveRegion(Scene scene) 112 public void RemoveRegion(Scene scene)
@@ -123,8 +142,8 @@ namespace OpenSim.Region.CoreModules.World.Objects.Commands
123 dispList.AddRow("External endpoint", ri.ExternalEndPoint); 142 dispList.AddRow("External endpoint", ri.ExternalEndPoint);
124 dispList.AddRow("Internal endpoint", ri.InternalEndPoint); 143 dispList.AddRow("Internal endpoint", ri.InternalEndPoint);
125 dispList.AddRow("Access level", ri.AccessLevel); 144 dispList.AddRow("Access level", ri.AccessLevel);
145 dispList.AddRow("Agent limit", rs.AgentLimit);
126 dispList.AddRow("Max agent limit", ri.AgentCapacity); 146 dispList.AddRow("Max agent limit", ri.AgentCapacity);
127 dispList.AddRow("Current agent limit", rs.AgentLimit);
128 dispList.AddRow("Linkset capacity", ri.LinksetCapacity <= 0 ? "not set" : ri.LinksetCapacity.ToString()); 147 dispList.AddRow("Linkset capacity", ri.LinksetCapacity <= 0 ? "not set" : ri.LinksetCapacity.ToString());
129 dispList.AddRow("Prim capacity", ri.ObjectCapacity); 148 dispList.AddRow("Prim capacity", ri.ObjectCapacity);
130 dispList.AddRow("Prim bonus", rs.ObjectBonus); 149 dispList.AddRow("Prim bonus", rs.ObjectBonus);
@@ -166,6 +185,73 @@ namespace OpenSim.Region.CoreModules.World.Objects.Commands
166 MainConsole.Instance.Output(sb.ToString()); 185 MainConsole.Instance.Output(sb.ToString());
167 } 186 }
168 187
188 private void HandleRegionSet(string module, string[] args)
189 {
190 if (!(MainConsole.Instance.ConsoleScene == null || MainConsole.Instance.ConsoleScene == m_scene))
191 return;
192
193 if (args.Length != 4)
194 {
195 MainConsole.Instance.OutputFormat("Usage: region set <param> <value>");
196 return;
197 }
198
199 string param = args[2];
200 string rawValue = args[3];
201
202 if (!(MainConsole.Instance.ConsoleScene == null || MainConsole.Instance.ConsoleScene == m_scene))
203 return;
204
205 RegionInfo ri = m_scene.RegionInfo;
206 RegionSettings rs = ri.RegionSettings;
207
208 if (param == "agent-limit")
209 {
210 int newValue;
211
212 if (!ConsoleUtil.TryParseConsoleNaturalInt(MainConsole.Instance, rawValue, out newValue))
213 return;
214
215 if (newValue > ri.AgentCapacity)
216 {
217 MainConsole.Instance.OutputFormat(
218 "Cannot set {0} to {1} in {2} as max-agent-limit is {3}", "agent-limit",
219 newValue, m_scene.Name, ri.AgentCapacity);
220 }
221 else
222 {
223 rs.AgentLimit = newValue;
224
225 MainConsole.Instance.OutputFormat(
226 "{0} set to {1} in {2}", "agent-limit", newValue, m_scene.Name);
227 }
228
229 rs.Save();
230 }
231 else if (param == "max-agent-limit")
232 {
233 int newValue;
234
235 if (!ConsoleUtil.TryParseConsoleNaturalInt(MainConsole.Instance, rawValue, out newValue))
236 return;
237
238 ri.AgentCapacity = newValue;
239
240 MainConsole.Instance.OutputFormat(
241 "{0} set to {1} in {2}", "max-agent-limit", newValue, m_scene.Name);
242
243 if (ri.AgentCapacity < rs.AgentLimit)
244 {
245 rs.AgentLimit = ri.AgentCapacity;
246
247 MainConsole.Instance.OutputFormat(
248 "Reducing {0} to {1} in {2}", "agent-limit", rs.AgentLimit, m_scene.Name);
249 }
250
251 rs.Save();
252 }
253 }
254
169 private void HandleShowScene(string module, string[] cmd) 255 private void HandleShowScene(string module, string[] cmd)
170 { 256 {
171 if (!(MainConsole.Instance.ConsoleScene == null || MainConsole.Instance.ConsoleScene == m_scene)) 257 if (!(MainConsole.Instance.ConsoleScene == null || MainConsole.Instance.ConsoleScene == m_scene))