diff options
Diffstat (limited to 'OpenSim/Region/Application/OpenSim.cs')
-rw-r--r-- | OpenSim/Region/Application/OpenSim.cs | 173 |
1 files changed, 44 insertions, 129 deletions
diff --git a/OpenSim/Region/Application/OpenSim.cs b/OpenSim/Region/Application/OpenSim.cs index 51eb396..ed4b620 100644 --- a/OpenSim/Region/Application/OpenSim.cs +++ b/OpenSim/Region/Application/OpenSim.cs | |||
@@ -283,10 +283,6 @@ namespace OpenSim | |||
283 | "kick user <first> <last> [message]", | 283 | "kick user <first> <last> [message]", |
284 | "Kick a user off the simulator", KickUserCommand); | 284 | "Kick a user off the simulator", KickUserCommand); |
285 | 285 | ||
286 | m_console.Commands.AddCommand("region", false, "show assets", | ||
287 | "show assets", | ||
288 | "Show asset data", HandleShow); | ||
289 | |||
290 | m_console.Commands.AddCommand("region", false, "show users", | 286 | m_console.Commands.AddCommand("region", false, "show users", |
291 | "show users [full]", | 287 | "show users [full]", |
292 | "Show user data for users currently on the region", | 288 | "Show user data for users currently on the region", |
@@ -305,13 +301,6 @@ namespace OpenSim | |||
305 | m_console.Commands.AddCommand("region", false, "show regions", | 301 | m_console.Commands.AddCommand("region", false, "show regions", |
306 | "show regions", | 302 | "show regions", |
307 | "Show region data", HandleShow); | 303 | "Show region data", HandleShow); |
308 | |||
309 | m_console.Commands.AddCommand("region", false, "show queues", | ||
310 | "show queues [full]", | ||
311 | "Show queue data for each client", | ||
312 | "Without the 'full' option, only users actually on the region are shown." | ||
313 | + " With the 'full' option child agents of users in neighbouring regions are also shown.", | ||
314 | HandleShow); | ||
315 | 304 | ||
316 | m_console.Commands.AddCommand("region", false, "show ratings", | 305 | m_console.Commands.AddCommand("region", false, "show ratings", |
317 | "show ratings", | 306 | "show ratings", |
@@ -335,16 +324,19 @@ namespace OpenSim | |||
335 | "Restart all sims in this instance", RunCommand); | 324 | "Restart all sims in this instance", RunCommand); |
336 | 325 | ||
337 | m_console.Commands.AddCommand("region", false, "config set", | 326 | m_console.Commands.AddCommand("region", false, "config set", |
338 | "config set <section> <field> <value>", | 327 | "config set <section> <key> <value>", |
339 | "Set a config option", HandleConfig); | 328 | "Set a config option. In most cases this is not useful since changed parameters are not dynamically reloaded. Neither do changed parameters persist - you will have to change a config file manually and restart.", HandleConfig); |
340 | 329 | ||
341 | m_console.Commands.AddCommand("region", false, "config get", | 330 | m_console.Commands.AddCommand("region", false, "config get", |
342 | "config get <section> <field>", | 331 | "config get [<section>] [<key>]", |
343 | "Read a config option", HandleConfig); | 332 | "Show a config option", |
333 | "If neither section nor field are specified, then the whole current configuration is printed." + Environment.NewLine | ||
334 | + "If a section is given but not a field, then all fields in that section are printed.", | ||
335 | HandleConfig); | ||
344 | 336 | ||
345 | m_console.Commands.AddCommand("region", false, "config save", | 337 | m_console.Commands.AddCommand("region", false, "config save", |
346 | "config save", | 338 | "config save <path>", |
347 | "Save current configuration", HandleConfig); | 339 | "Save current configuration to a file at the given path", HandleConfig); |
348 | 340 | ||
349 | m_console.Commands.AddCommand("region", false, "command-script", | 341 | m_console.Commands.AddCommand("region", false, "command-script", |
350 | "command-script <script>", | 342 | "command-script <script>", |
@@ -586,7 +578,6 @@ namespace OpenSim | |||
586 | List<string> args = new List<string>(cmd); | 578 | List<string> args = new List<string>(cmd); |
587 | args.RemoveAt(0); | 579 | args.RemoveAt(0); |
588 | string[] cmdparams = args.ToArray(); | 580 | string[] cmdparams = args.ToArray(); |
589 | string n = "CONFIG"; | ||
590 | 581 | ||
591 | if (cmdparams.Length > 0) | 582 | if (cmdparams.Length > 0) |
592 | { | 583 | { |
@@ -595,8 +586,8 @@ namespace OpenSim | |||
595 | case "set": | 586 | case "set": |
596 | if (cmdparams.Length < 4) | 587 | if (cmdparams.Length < 4) |
597 | { | 588 | { |
598 | MainConsole.Instance.Output(String.Format("SYNTAX: {0} SET SECTION KEY VALUE",n)); | 589 | Notice("Syntax: config set <section> <key> <value>"); |
599 | MainConsole.Instance.Output(String.Format("EXAMPLE: {0} SET ScriptEngine.DotNetEngine NumberOfScriptThreads 5",n)); | 590 | Notice("Example: config set ScriptEngine.DotNetEngine NumberOfScriptThreads 5"); |
600 | } | 591 | } |
601 | else | 592 | else |
602 | { | 593 | { |
@@ -609,48 +600,68 @@ namespace OpenSim | |||
609 | c.Set(cmdparams[2], _value); | 600 | c.Set(cmdparams[2], _value); |
610 | m_config.Source.Merge(source); | 601 | m_config.Source.Merge(source); |
611 | 602 | ||
612 | MainConsole.Instance.Output(String.Format("{0} {0} {1} {2} {3}",n,cmdparams[1],cmdparams[2],_value)); | 603 | Notice("In section [{0}], set {1} = {2}", c.Name, cmdparams[2], _value); |
613 | } | 604 | } |
614 | } | 605 | } |
615 | break; | 606 | break; |
616 | 607 | ||
617 | case "get": | 608 | case "get": |
618 | if (cmdparams.Length < 3) | 609 | if (cmdparams.Length == 1) |
619 | { | 610 | { |
620 | MainConsole.Instance.Output(String.Format("SYNTAX: {0} GET SECTION KEY",n)); | 611 | foreach (IConfig config in m_config.Source.Configs) |
621 | MainConsole.Instance.Output(String.Format("EXAMPLE: {0} GET ScriptEngine.DotNetEngine NumberOfScriptThreads",n)); | 612 | { |
613 | Notice("[{0}]", config.Name); | ||
614 | string[] keys = config.GetKeys(); | ||
615 | foreach (string key in keys) | ||
616 | Notice(" {0} = {1}", key, config.GetString(key)); | ||
617 | } | ||
622 | } | 618 | } |
623 | else | 619 | else if (cmdparams.Length == 2 || cmdparams.Length == 3) |
624 | { | 620 | { |
625 | IConfig c = m_config.Source.Configs[cmdparams[1]]; | 621 | IConfig config = m_config.Source.Configs[cmdparams[1]]; |
626 | if (c == null) | 622 | if (config == null) |
627 | { | 623 | { |
628 | MainConsole.Instance.Output(String.Format("Section \"{0}\" does not exist.",cmdparams[1])); | 624 | Notice("Section \"{0}\" does not exist.",cmdparams[1]); |
629 | break; | 625 | break; |
630 | } | 626 | } |
631 | else | 627 | else |
632 | { | 628 | { |
633 | MainConsole.Instance.Output(String.Format("{0} GET {1} {2} : {3}",n,cmdparams[1],cmdparams[2], | 629 | if (cmdparams.Length == 2) |
634 | c.GetString(cmdparams[2]))); | 630 | { |
631 | Notice("[{0}]", config.Name); | ||
632 | foreach (string key in config.GetKeys()) | ||
633 | Notice(" {0} = {1}", key, config.GetString(key)); | ||
634 | } | ||
635 | else | ||
636 | { | ||
637 | Notice( | ||
638 | "config get {0} {1} : {2}", | ||
639 | cmdparams[1], cmdparams[2], config.GetString(cmdparams[2])); | ||
640 | } | ||
635 | } | 641 | } |
636 | } | 642 | } |
643 | else | ||
644 | { | ||
645 | Notice("Syntax: config get [<section>] [<key>]"); | ||
646 | Notice("Example: config get ScriptEngine.DotNetEngine NumberOfScriptThreads"); | ||
647 | } | ||
637 | 648 | ||
638 | break; | 649 | break; |
639 | 650 | ||
640 | case "save": | 651 | case "save": |
641 | if (cmdparams.Length < 2) | 652 | if (cmdparams.Length < 2) |
642 | { | 653 | { |
643 | MainConsole.Instance.Output("SYNTAX: " + n + " SAVE FILE"); | 654 | Notice("Syntax: config save <path>"); |
644 | return; | 655 | return; |
645 | } | 656 | } |
646 | 657 | ||
647 | if (Application.iniFilePath == cmdparams[1]) | 658 | if (Application.iniFilePath == cmdparams[1]) |
648 | { | 659 | { |
649 | MainConsole.Instance.Output("FILE can not be " + Application.iniFilePath); | 660 | Notice("Path can not be " + Application.iniFilePath); |
650 | return; | 661 | return; |
651 | } | 662 | } |
652 | 663 | ||
653 | MainConsole.Instance.Output("Saving configuration file: " + cmdparams[1]); | 664 | Notice("Saving configuration file: " + cmdparams[1]); |
654 | m_config.Save(cmdparams[1]); | 665 | m_config.Save(cmdparams[1]); |
655 | break; | 666 | break; |
656 | } | 667 | } |
@@ -869,10 +880,6 @@ namespace OpenSim | |||
869 | 880 | ||
870 | switch (showParams[0]) | 881 | switch (showParams[0]) |
871 | { | 882 | { |
872 | case "assets": | ||
873 | MainConsole.Instance.Output("Not implemented."); | ||
874 | break; | ||
875 | |||
876 | case "users": | 883 | case "users": |
877 | IList agents; | 884 | IList agents; |
878 | if (showParams.Length > 1 && showParams[1] == "full") | 885 | if (showParams.Length > 1 && showParams[1] == "full") |
@@ -959,10 +966,6 @@ namespace OpenSim | |||
959 | }); | 966 | }); |
960 | break; | 967 | break; |
961 | 968 | ||
962 | case "queues": | ||
963 | Notice(GetQueuesReport(showParams)); | ||
964 | break; | ||
965 | |||
966 | case "ratings": | 969 | case "ratings": |
967 | m_sceneManager.ForEachScene( | 970 | m_sceneManager.ForEachScene( |
968 | delegate(Scene scene) | 971 | delegate(Scene scene) |
@@ -990,94 +993,6 @@ namespace OpenSim | |||
990 | } | 993 | } |
991 | 994 | ||
992 | /// <summary> | 995 | /// <summary> |
993 | /// Generate UDP Queue data report for each client | ||
994 | /// </summary> | ||
995 | /// <param name="showParams"></param> | ||
996 | /// <returns></returns> | ||
997 | private string GetQueuesReport(string[] showParams) | ||
998 | { | ||
999 | bool showChildren = false; | ||
1000 | |||
1001 | if (showParams.Length > 1 && showParams[1] == "full") | ||
1002 | showChildren = true; | ||
1003 | |||
1004 | StringBuilder report = new StringBuilder(); | ||
1005 | |||
1006 | int columnPadding = 2; | ||
1007 | int maxNameLength = 18; | ||
1008 | int maxRegionNameLength = 14; | ||
1009 | int maxTypeLength = 4; | ||
1010 | int totalInfoFieldsLength = maxNameLength + columnPadding + maxRegionNameLength + columnPadding + maxTypeLength + columnPadding; | ||
1011 | |||
1012 | report.AppendFormat("{0,-" + maxNameLength + "}{1,-" + columnPadding + "}", "User", ""); | ||
1013 | report.AppendFormat("{0,-" + maxRegionNameLength + "}{1,-" + columnPadding + "}", "Region", ""); | ||
1014 | report.AppendFormat("{0,-" + maxTypeLength + "}{1,-" + columnPadding + "}", "Type", ""); | ||
1015 | |||
1016 | report.AppendFormat( | ||
1017 | "{0,9} {1,9} {2,9} {3,8} {4,7} {5,7} {6,7} {7,7} {8,9} {9,7} {10,7}\n", | ||
1018 | "Packets", | ||
1019 | "Packets", | ||
1020 | "Bytes", | ||
1021 | "Bytes", | ||
1022 | "Bytes", | ||
1023 | "Bytes", | ||
1024 | "Bytes", | ||
1025 | "Bytes", | ||
1026 | "Bytes", | ||
1027 | "Bytes", | ||
1028 | "Bytes"); | ||
1029 | |||
1030 | report.AppendFormat("{0,-" + totalInfoFieldsLength + "}", ""); | ||
1031 | report.AppendFormat( | ||
1032 | "{0,9} {1,9} {2,9} {3,8} {4,7} {5,7} {6,7} {7,7} {8,9} {9,7} {10,7}\n", | ||
1033 | "Out", | ||
1034 | "In", | ||
1035 | "Unacked", | ||
1036 | "Resend", | ||
1037 | "Land", | ||
1038 | "Wind", | ||
1039 | "Cloud", | ||
1040 | "Task", | ||
1041 | "Texture", | ||
1042 | "Asset", | ||
1043 | "State"); | ||
1044 | |||
1045 | m_sceneManager.ForEachScene( | ||
1046 | delegate(Scene scene) | ||
1047 | { | ||
1048 | scene.ForEachClient( | ||
1049 | delegate(IClientAPI client) | ||
1050 | { | ||
1051 | if (client is IStatsCollector) | ||
1052 | { | ||
1053 | bool isChild = scene.PresenceChildStatus(client.AgentId); | ||
1054 | if (isChild && !showChildren) | ||
1055 | return; | ||
1056 | |||
1057 | string name = client.Name; | ||
1058 | string regionName = scene.RegionInfo.RegionName; | ||
1059 | |||
1060 | report.AppendFormat( | ||
1061 | "{0,-" + maxNameLength + "}{1,-" + columnPadding + "}", | ||
1062 | name.Length > maxNameLength ? name.Substring(0, maxNameLength) : name, ""); | ||
1063 | report.AppendFormat( | ||
1064 | "{0,-" + maxRegionNameLength + "}{1,-" + columnPadding + "}", | ||
1065 | regionName.Length > maxRegionNameLength ? regionName.Substring(0, maxRegionNameLength) : regionName, ""); | ||
1066 | report.AppendFormat( | ||
1067 | "{0,-" + maxTypeLength + "}{1,-" + columnPadding + "}", | ||
1068 | isChild ? "Cd" : "Rt", ""); | ||
1069 | |||
1070 | IStatsCollector stats = (IStatsCollector)client; | ||
1071 | |||
1072 | report.AppendLine(stats.Report()); | ||
1073 | } | ||
1074 | }); | ||
1075 | }); | ||
1076 | |||
1077 | return report.ToString(); | ||
1078 | } | ||
1079 | |||
1080 | /// <summary> | ||
1081 | /// Use XML2 format to serialize data to a file | 996 | /// Use XML2 format to serialize data to a file |
1082 | /// </summary> | 997 | /// </summary> |
1083 | /// <param name="module"></param> | 998 | /// <param name="module"></param> |