diff --git a/OpenSim/Framework/Console/ConsoleBase.cs b/OpenSim/Framework/Console/ConsoleBase.cs index 8e61587e97..721e91a5ef 100644 --- a/OpenSim/Framework/Console/ConsoleBase.cs +++ b/OpenSim/Framework/Console/ConsoleBase.cs @@ -48,6 +48,11 @@ namespace OpenSim.Framework.Console /// public string module; + /// + /// Whether the module is shared + /// + public bool shared; + /// /// Very short BNF description /// @@ -66,7 +71,7 @@ namespace OpenSim.Framework.Console /// /// The method to invoke for this command /// - public CommandDelegate fn; + public List fn; } /// @@ -172,10 +177,11 @@ namespace OpenSim.Framework.Console /// /// /// - public void AddCommand( - string module, string command, string help, string longhelp, CommandDelegate fn) + public void AddCommand(string module, bool shared, string command, + string help, string longhelp, CommandDelegate fn) { - AddCommand(module, command, help, longhelp, String.Empty, fn); + AddCommand(module, shared, command, help, longhelp, + String.Empty, fn); } /// @@ -187,8 +193,9 @@ namespace OpenSim.Framework.Console /// /// /// - public void AddCommand( - string module, string command, string help, string longhelp, string descriptivehelp, CommandDelegate fn) + public void AddCommand(string module, bool shared, string command, + string help, string longhelp, string descriptivehelp, + CommandDelegate fn) { string[] parts = Parser.Parse(command); @@ -212,15 +219,25 @@ namespace OpenSim.Framework.Console } } + CommandInfo info; + if (current.ContainsKey(String.Empty)) + { + info = (CommandInfo)current[String.Empty]; + if (!info.shared && !info.fn.Contains(fn)) + info.fn.Add(fn); + return; + } - CommandInfo info = new CommandInfo(); + info = new CommandInfo(); info.module = module; + info.shared = shared; info.help_text = help; info.long_help = longhelp; info.descriptive_help = descriptivehelp; - info.fn = fn; + info.fn = new List(); + info.fn.Add(fn); current[String.Empty] = info; } @@ -275,7 +292,7 @@ namespace OpenSim.Framework.Console if (s == String.Empty) { CommandInfo ci = (CommandInfo)current[String.Empty]; - if (ci.fn != null) + if (ci.fn.Count != null) addcr = true; } else @@ -337,9 +354,10 @@ namespace OpenSim.Framework.Console if (current.ContainsKey(String.Empty)) { CommandInfo ci = (CommandInfo)current[String.Empty]; - if (ci.fn == null) + if (ci.fn.Count == null) return new string[0]; - ci.fn(ci.module, result); + foreach (CommandDelegate fn in ci.fn) + fn(ci.module, result); return result; } return new string[0]; @@ -409,9 +427,8 @@ namespace OpenSim.Framework.Console { DefaultPrompt = defaultPrompt; - Commands.AddCommand( - "console", "help", "help []", - "Get general command list or more detailed help on a specific command", Help); + Commands.AddCommand("console", false, "help", "help []", + "Get general command list or more detailed help on a specific command", Help); } public void SetGuiMode(bool mode) diff --git a/OpenSim/Framework/IScene.cs b/OpenSim/Framework/IScene.cs index 493c626bd3..1c0a3b5cf3 100644 --- a/OpenSim/Framework/IScene.cs +++ b/OpenSim/Framework/IScene.cs @@ -90,6 +90,6 @@ namespace OpenSim.Framework T RequestModuleInterface(); T[] RequestModuleInterfaces(); - void AddCommand(string module, string command, string shorthelp, string longhelp, CommandDelegate callback); + void AddCommand(object module, string command, string shorthelp, string longhelp, CommandDelegate callback); } } diff --git a/OpenSim/Framework/Servers/BaseOpenSimServer.cs b/OpenSim/Framework/Servers/BaseOpenSimServer.cs index ac5e183388..ff53e1a0a0 100644 --- a/OpenSim/Framework/Servers/BaseOpenSimServer.cs +++ b/OpenSim/Framework/Servers/BaseOpenSimServer.cs @@ -104,35 +104,35 @@ namespace OpenSim.Framework.Servers { SetConsoleLogLevel(new string[] { "ALL" }); - m_console.Commands.AddCommand("base", "quit", + m_console.Commands.AddCommand("base", false, "quit", "quit", "Quit the application", HandleQuit); - m_console.Commands.AddCommand("base", "shutdown", + m_console.Commands.AddCommand("base", false, "shutdown", "shutdown", "Quit the application", HandleQuit); - m_console.Commands.AddCommand("base", "set log level", + m_console.Commands.AddCommand("base", false, "set log level", "set log level ", "Set the console logging level", HandleLogLevel); - m_console.Commands.AddCommand("base", "show info", + m_console.Commands.AddCommand("base", false, "show info", "show info", "Show general information", HandleShow); - m_console.Commands.AddCommand("base", "show stats", + m_console.Commands.AddCommand("base", false, "show stats", "show stats", "Show statistics", HandleShow); - m_console.Commands.AddCommand("base", "show threads", + m_console.Commands.AddCommand("base", false, "show threads", "show threads", "Show thread status", HandleShow); - m_console.Commands.AddCommand("base", "show uptime", + m_console.Commands.AddCommand("base", false, "show uptime", "show uptime", "Show server uptime", HandleShow); - m_console.Commands.AddCommand("base", "show version", + m_console.Commands.AddCommand("base", false, "show version", "show version", "Show server version", HandleShow); } diff --git a/OpenSim/Grid/GridServer/GridServerBase.cs b/OpenSim/Grid/GridServer/GridServerBase.cs index 3fb07b5993..9cc25e8291 100644 --- a/OpenSim/Grid/GridServer/GridServerBase.cs +++ b/OpenSim/Grid/GridServer/GridServerBase.cs @@ -114,15 +114,17 @@ namespace OpenSim.Grid.GridServer base.StartupSpecific(); - m_console.Commands.AddCommand("gridserver", "enable registration", + m_console.Commands.AddCommand("gridserver", false, + "enable registration", "enable registration", "Enable new regions to register", HandleRegistration); - m_console.Commands.AddCommand("gridserver", "disable registration", + m_console.Commands.AddCommand("gridserver", false, + "disable registration", "disable registration", "Disable registering new regions", HandleRegistration); - m_console.Commands.AddCommand("gridserver", "show status", + m_console.Commands.AddCommand("gridserver", false, "show status", "show status", "Show registration status", HandleShowStatus); } diff --git a/OpenSim/Grid/InventoryServer/Main.cs b/OpenSim/Grid/InventoryServer/Main.cs index 4727f6e863..862ae58bbc 100644 --- a/OpenSim/Grid/InventoryServer/Main.cs +++ b/OpenSim/Grid/InventoryServer/Main.cs @@ -80,7 +80,7 @@ namespace OpenSim.Grid.InventoryServer base.StartupSpecific(); - m_console.Commands.AddCommand("inventoryserver", "add user", + m_console.Commands.AddCommand("inventoryserver", false, "add user", "add user", "Add a random user inventory", HandleAddUser); } diff --git a/OpenSim/Grid/MessagingServer/Main.cs b/OpenSim/Grid/MessagingServer/Main.cs index 9b7e73163f..13f52ab108 100644 --- a/OpenSim/Grid/MessagingServer/Main.cs +++ b/OpenSim/Grid/MessagingServer/Main.cs @@ -127,11 +127,11 @@ namespace OpenSim.Grid.MessagingServer base.StartupSpecific(); - m_console.Commands.AddCommand("messageserver", "clear cache", + m_console.Commands.AddCommand("messageserver", false, "clear cache", "clear cache", "Clear presence cache", HandleClearCache); - m_console.Commands.AddCommand("messageserver", "register", + m_console.Commands.AddCommand("messageserver", false, "register", "register", "Re-register with user server(s)", HandleRegister); } diff --git a/OpenSim/Grid/UserServer/Main.cs b/OpenSim/Grid/UserServer/Main.cs index 0b0bee1826..dd3f0b74ce 100644 --- a/OpenSim/Grid/UserServer/Main.cs +++ b/OpenSim/Grid/UserServer/Main.cs @@ -122,32 +122,32 @@ namespace OpenSim.Grid.UserServer base.StartupSpecific(); - m_console.Commands.AddCommand("userserver", "create user", + m_console.Commands.AddCommand("userserver", false, "create user", "create user [ [ [ [email]]]]", "Create a new user account", RunCommand); - m_console.Commands.AddCommand("userserver", "reset user password", + m_console.Commands.AddCommand("userserver", false, "reset user password", "reset user password [ [ []]]", "Reset a user's password", RunCommand); - m_console.Commands.AddCommand("userserver", "login level", + m_console.Commands.AddCommand("userserver", false, "login level", "login level ", "Set the minimum user level to log in", HandleLoginCommand); - m_console.Commands.AddCommand("userserver", "login reset", + m_console.Commands.AddCommand("userserver", false, "login reset", "login reset", "Reset the login level to allow all users", HandleLoginCommand); - m_console.Commands.AddCommand("userserver", "login text", + m_console.Commands.AddCommand("userserver", false, "login text", "login text ", "Set the text users will see on login", HandleLoginCommand); - m_console.Commands.AddCommand("userserver", "test-inventory", + m_console.Commands.AddCommand("userserver", false, "test-inventory", "test-inventory", "Perform a test inventory transaction", RunCommand); - m_console.Commands.AddCommand("userserver", "logoff-user", + m_console.Commands.AddCommand("userserver", false, "logoff-user", "logoff-user ", "Log off a named user", RunCommand); } diff --git a/OpenSim/Region/Application/HGOpenSimNode.cs b/OpenSim/Region/Application/HGOpenSimNode.cs index 458c6afa78..6f6d6cbc09 100644 --- a/OpenSim/Region/Application/HGOpenSimNode.cs +++ b/OpenSim/Region/Application/HGOpenSimNode.cs @@ -78,8 +78,8 @@ namespace OpenSim base.StartupSpecific(); - MainConsole.Instance.Commands.AddCommand("hypergrid", "link-mapping", "link-mapping [ ] ", "Set local coordinate to map HG regions to", RunCommand); - MainConsole.Instance.Commands.AddCommand("hypergrid", "link-region", "link-region :[:] ", "Link a hypergrid region", RunCommand); + MainConsole.Instance.Commands.AddCommand("hypergrid", false, "link-mapping", "link-mapping [ ] ", "Set local coordinate to map HG regions to", RunCommand); + MainConsole.Instance.Commands.AddCommand("hypergrid", false, "link-region", "link-region :[:] ", "Link a hypergrid region", RunCommand); } protected override void InitialiseStandaloneServices(LibraryRootFolder libraryRootFolder) diff --git a/OpenSim/Region/Application/OpenSim.cs b/OpenSim/Region/Application/OpenSim.cs index 7b47eb4bd2..898e298da5 100644 --- a/OpenSim/Region/Application/OpenSim.cs +++ b/OpenSim/Region/Application/OpenSim.cs @@ -99,185 +99,185 @@ namespace OpenSim m_console.SetGuiMode(m_gui); MainConsole.Instance = m_console; - m_console.Commands.AddCommand("region", "clear assets", + m_console.Commands.AddCommand("region", false, "clear assets", "clear assets", "Clear the asset cache", HandleClearAssets); - m_console.Commands.AddCommand("region", "force update", + m_console.Commands.AddCommand("region", false, "force update", "force update", "Force the update of all objects on clients", HandleForceUpdate); - m_console.Commands.AddCommand("region", "debug packet", + m_console.Commands.AddCommand("region", false, "debug packet", "debug packet ", "Turn on packet debugging", Debug); - m_console.Commands.AddCommand("region", "debug scene", + m_console.Commands.AddCommand("region", false, "debug scene", "debug scene ", "Turn on scene debugging", Debug); - m_console.Commands.AddCommand("region", "change region", + m_console.Commands.AddCommand("region", false, "change region", "change region ", "Change current console region", ChangeSelectedRegion); - m_console.Commands.AddCommand("region", "save xml", + m_console.Commands.AddCommand("region", false, "save xml", "save xml", "Save a region's data in XML format", SaveXml); - m_console.Commands.AddCommand("region", "save xml2", + m_console.Commands.AddCommand("region", false, "save xml2", "save xml2", "Save a region's data in XML2 format", SaveXml2); - m_console.Commands.AddCommand("region", "load xml", + m_console.Commands.AddCommand("region", false, "load xml", "load xml [-newIDs [ ]]", "Load a region's data from XML format", LoadXml); - m_console.Commands.AddCommand("region", "load xml2", + m_console.Commands.AddCommand("region", false, "load xml2", "load xml2", "Load a region's data from XML2 format", LoadXml2); - m_console.Commands.AddCommand("region", "save prims xml2", + m_console.Commands.AddCommand("region", false, "save prims xml2", "save prims xml2 [ ]", "Save named prim to XML2", SavePrimsXml2); - m_console.Commands.AddCommand("region", "load oar", + m_console.Commands.AddCommand("region", false, "load oar", "load oar ", "Load a region's data from OAR archive", LoadOar); - m_console.Commands.AddCommand("region", "save oar", + m_console.Commands.AddCommand("region", false, "save oar", "save oar ", "Save a region's data to an OAR archive", "More information on forthcoming options here soon", SaveOar); /* - m_console.Commands.AddCommand("region", "save inventory", + m_console.Commands.AddCommand("region", false, "save inventory", "save inventory ", "Save user inventory data", SaveInv); - m_console.Commands.AddCommand("region", "load inventory", + m_console.Commands.AddCommand("region", false, "load inventory", "load inventory ", "Load user inventory data", LoadInv); */ - m_console.Commands.AddCommand("region", "edit scale", + m_console.Commands.AddCommand("region", false, "edit scale", "edit scale ", "Change the scale of a named prim", HandleEditScale); - m_console.Commands.AddCommand("region", "kick user", + m_console.Commands.AddCommand("region", false, "kick user", "kick user ", "Kick a user off the simulator", KickUserCommand); - m_console.Commands.AddCommand("region", "show assets", + m_console.Commands.AddCommand("region", false, "show assets", "show assets", "Show asset data", HandleShow); - m_console.Commands.AddCommand("region", "show users", + m_console.Commands.AddCommand("region", false, "show users", "show users [full]", "Show user data", HandleShow); - m_console.Commands.AddCommand("region", "show users full", + m_console.Commands.AddCommand("region", false, "show users full", "show users full", String.Empty, HandleShow); - m_console.Commands.AddCommand("region", "show modules", + m_console.Commands.AddCommand("region", false, "show modules", "show modules", "Show module data", HandleShow); - m_console.Commands.AddCommand("region", "show regions", + m_console.Commands.AddCommand("region", false, "show regions", "show regions", "Show region data", HandleShow); - m_console.Commands.AddCommand("region", "show queues", + m_console.Commands.AddCommand("region", false, "show queues", "show queues", "Show queue data", HandleShow); - m_console.Commands.AddCommand("region", "alert", + m_console.Commands.AddCommand("region", false, "alert", "alert ", "Send an alert to a user", RunCommand); - m_console.Commands.AddCommand("region", "alert general", + m_console.Commands.AddCommand("region", false, "alert general", "alert general ", "Send an alert everyone", RunCommand); - m_console.Commands.AddCommand("region", "backup", + m_console.Commands.AddCommand("region", false, "backup", "backup", "Persist objects to the database now", RunCommand); - m_console.Commands.AddCommand("region", "create region", + m_console.Commands.AddCommand("region", false, "create region", "create region", "Create a new region", HandleCreateRegion); - m_console.Commands.AddCommand("region", "login enable", + m_console.Commands.AddCommand("region", false, "login enable", "login enable", "Enable logins to the simulator", HandleLoginEnable); - m_console.Commands.AddCommand("region", "login disable", + m_console.Commands.AddCommand("region", false, "login disable", "login disable", "Disable logins to the simulator", HandleLoginDisable); - m_console.Commands.AddCommand("region", "login status", + m_console.Commands.AddCommand("region", false, "login status", "login status", "Display status of logins", HandleLoginStatus); - m_console.Commands.AddCommand("region", "restart", + m_console.Commands.AddCommand("region", false, "restart", "restart", "Restart all sims in this instance", RunCommand); - m_console.Commands.AddCommand("region", "config set", + m_console.Commands.AddCommand("region", false, "config set", "config set
", "Set a config option", HandleConfig); - m_console.Commands.AddCommand("region", "config get", + m_console.Commands.AddCommand("region", false, "config get", "config get
", "Read a config option", HandleConfig); - m_console.Commands.AddCommand("region", "config save", + m_console.Commands.AddCommand("region", false, "config save", "config save", "Save current configuration", HandleConfig); - m_console.Commands.AddCommand("region", "command-script", + m_console.Commands.AddCommand("region", false, "command-script", "command-script