From d8313e314feddc492ec9d8e657aa7d0a15a7004b Mon Sep 17 00:00:00 2001 From: diva Date: Mon, 27 Apr 2009 00:16:59 +0000 Subject: [PATCH] Getting rid of -hypergrid=true on the command line. This config now goes inside OpenSim.ini in the Startup section. This makes the HG compatible with -background, and prepares the way for further work on HG-related config vars. Might help with mantis #3527. --- .../CreateCommsManagerPlugin.cs | 16 +--- OpenSim/Region/Application/Application.cs | 8 +- .../{HGOpenSimNode.cs => HGCommands.cs} | 86 ++++++------------- OpenSim/Region/Application/OpenSim.cs | 16 ++++ OpenSim/Region/Application/OpenSimBase.cs | 5 ++ bin/OpenSim.ini.example | 3 + 6 files changed, 53 insertions(+), 81 deletions(-) rename OpenSim/Region/Application/{HGOpenSimNode.cs => HGCommands.cs} (73%) diff --git a/OpenSim/ApplicationPlugins/CreateCommsManager/CreateCommsManagerPlugin.cs b/OpenSim/ApplicationPlugins/CreateCommsManager/CreateCommsManagerPlugin.cs index 3b98038302..2bf51330d6 100644 --- a/OpenSim/ApplicationPlugins/CreateCommsManager/CreateCommsManagerPlugin.cs +++ b/OpenSim/ApplicationPlugins/CreateCommsManager/CreateCommsManagerPlugin.cs @@ -130,20 +130,6 @@ namespace OpenSim.ApplicationPlugins.CreateCommsManager protected void InitialiseHGServices(OpenSimBase openSim, LibraryRootFolder libraryRootFolder) { - HGOpenSimNode hgNode = null; - try - { - hgNode = (HGOpenSimNode) openSim; - } - catch (Exception e) - { - m_log.Error("[CreateComms] " + e.Message); - m_log.Error("[CreateComms] The OpenSim application class was : " + openSim.ToString()); - m_log.Error("[CreateComms] To use hypergrid mode, please make sure you are starting opensim with the command line: opensim.exe -hypergrid=true"); - m_log.Error("[CreateComms] Also hypergrid mode can not be ran while using the -background=true command line argument."); - Environment.Exit(1); - } - // Standalone mode is determined by !startupConfig.GetBoolean("gridmode", false) if (m_openSim.ConfigurationSettings.Standalone) { @@ -154,7 +140,7 @@ namespace OpenSim.ApplicationPlugins.CreateCommsManager // We are in grid mode InitialiseHGGridServices(libraryRootFolder); } - hgNode.HGServices = HGServices; + HGCommands.HGServices = HGServices; } protected void InitialiseStandardServices(LibraryRootFolder libraryRootFolder) diff --git a/OpenSim/Region/Application/Application.cs b/OpenSim/Region/Application/Application.cs index 7244dc91f9..46e3fc9016 100644 --- a/OpenSim/Region/Application/Application.cs +++ b/OpenSim/Region/Application/Application.cs @@ -94,14 +94,12 @@ namespace OpenSim configSource.AddSwitch("Startup", "inidirectory"); configSource.AddSwitch("Startup", "gridmode"); configSource.AddSwitch("Startup", "physics"); - configSource.AddSwitch("Startup", "hypergrid"); configSource.AddSwitch("Startup", "gui"); configSource.AddConfig("StandAlone"); configSource.AddConfig("Network"); bool background = configSource.Configs["Startup"].GetBoolean("background", false); - bool hgrid = configSource.Configs["Startup"].GetBoolean("hypergrid", false); m_saveCrashDumps = configSource.Configs["Startup"].GetBoolean("save_crashes", false); m_crashDir = configSource.Configs["Startup"].GetString("crash_dir", m_crashDir); @@ -112,11 +110,7 @@ namespace OpenSim } else { - m_sim = null; - if (hgrid) - m_sim = new HGOpenSimNode(configSource); - else - m_sim = new OpenSim(configSource); + m_sim = new OpenSim(configSource); m_sim.Startup(); diff --git a/OpenSim/Region/Application/HGOpenSimNode.cs b/OpenSim/Region/Application/HGCommands.cs similarity index 73% rename from OpenSim/Region/Application/HGOpenSimNode.cs rename to OpenSim/Region/Application/HGCommands.cs index f4f30620aa..07d3dcbc5c 100644 --- a/OpenSim/Region/Application/HGOpenSimNode.cs +++ b/OpenSim/Region/Application/HGCommands.cs @@ -40,42 +40,17 @@ using OpenSim.Region.Framework.Scenes.Hypergrid; namespace OpenSim { - public class HGOpenSimNode : OpenSim + public class HGCommands { private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); - public IHyperlink HGServices = null; + public static IHyperlink HGServices = null; - private uint m_autoMappingX = 0; - private uint m_autoMappingY = 0; - private bool m_enableAutoMapping = false; + private static uint m_autoMappingX = 0; + private static uint m_autoMappingY = 0; + private static bool m_enableAutoMapping = false; - public HGOpenSimNode(IConfigSource configSource) : base(configSource) - { - } - - /// - /// Performs initialisation of the scene, such as loading configuration from disk. - /// - protected override void StartupSpecific() - { - m_log.Info("===================================================================="); - m_log.Info("=================== STARTING HYPERGRID NODE ========================"); - m_log.Info("===================================================================="); - - base.StartupSpecific(); - - 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); - MainConsole.Instance.Commands.AddCommand("hypergrid", false, "unlink-region", - "unlink-region or : ", - "Unlink a hypergrid region", RunCommand); - } - - protected override Scene CreateScene(RegionInfo regionInfo, StorageManager storageManager, - AgentCircuitManager circuitManager) + public static Scene CreateScene(RegionInfo regionInfo, AgentCircuitManager circuitManager, CommunicationsManager m_commsManager, + StorageManager storageManager, ModuleLoader m_moduleLoader, ConfigSettings m_configSettings, OpenSimConfigSource m_config, string m_version) { HGSceneCommunicationService sceneGridService = new HGSceneCommunicationService(m_commsManager, HGServices); @@ -86,18 +61,11 @@ namespace OpenSim m_configSettings.See_into_region_from_neighbor, m_config.Source, m_version); } - private new void RunCommand(string module, string[] cp) + public static void RunHGCommand(string command, string[] cmdparams, Scene scene) { - List cmdparams = new List(cp); - if (cmdparams.Count < 1) - return; - - string command = cmdparams[0]; - cmdparams.RemoveAt(0); - if (command.Equals("link-mapping")) { - if (cmdparams.Count == 2) + if (cmdparams.Length == 2) { try { @@ -115,11 +83,11 @@ namespace OpenSim } else if (command.Equals("link-region")) { - if (cmdparams.Count < 3) + if (cmdparams.Length < 3) { - if ((cmdparams.Count == 1) || (cmdparams.Count == 2)) + if ((cmdparams.Length == 1) || (cmdparams.Length == 2)) { - LoadXmlLinkFile(cmdparams); + LoadXmlLinkFile(cmdparams, scene); } else { @@ -138,8 +106,8 @@ namespace OpenSim xloc = Convert.ToUInt32(cmdparams[0]); yloc = Convert.ToUInt32(cmdparams[1]); mapName = cmdparams[2]; - if (cmdparams.Count > 3) - for (int i = 3; i < cmdparams.Count; i++) + if (cmdparams.Length > 3) + for (int i = 3; i < cmdparams.Length; i++) mapName += " " + cmdparams[i]; m_log.Info(">> MapName: " + mapName); @@ -153,7 +121,7 @@ namespace OpenSim return; } - HGHyperlink.TryLinkRegionToCoords(m_sceneManager.CurrentOrFirstScene, null, mapName, xloc, yloc); + HGHyperlink.TryLinkRegionToCoords(scene, null, mapName, xloc, yloc); } else { @@ -179,12 +147,12 @@ namespace OpenSim } //if (TryCreateLink(xloc, yloc, externalPort, externalHostName, out regInfo)) - if (HGHyperlink.TryCreateLink(m_sceneManager.CurrentOrFirstScene, null, xloc, yloc, "", externalPort, externalHostName, out regInfo)) + if (HGHyperlink.TryCreateLink(scene, null, xloc, yloc, "", externalPort, externalHostName, out regInfo)) { - if (cmdparams.Count >= 5) + if (cmdparams.Length >= 5) { regInfo.RegionName = ""; - for (int i = 4; i < cmdparams.Count; i++) + for (int i = 4; i < cmdparams.Length; i++) regInfo.RegionName += cmdparams[i] + " "; } } @@ -193,19 +161,19 @@ namespace OpenSim } else if (command.Equals("unlink-region")) { - if (cmdparams.Count < 1) + if (cmdparams.Length < 1) { UnlinkRegionCmdUsage(); return; } - if (HGHyperlink.TryUnlinkRegion(m_sceneManager.CurrentOrFirstScene, cmdparams[0])) + if (HGHyperlink.TryUnlinkRegion(scene, cmdparams[0])) m_log.InfoFormat("[HGrid]: Successfully unlinked {0}", cmdparams[0]); else m_log.InfoFormat("[HGrid]: Unable to unlink {0}, region not found", cmdparams[0]); } } - private void LoadXmlLinkFile(List cmdparams) + private static void LoadXmlLinkFile(string[] cmdparams, Scene scene) { //use http://www.hgurl.com/hypergrid.xml for test try @@ -214,7 +182,7 @@ namespace OpenSim XmlConfigSource cs = new XmlConfigSource(r); string[] excludeSections = null; - if (cmdparams.Count == 2) + if (cmdparams.Length == 2) { if (cmdparams[1].ToLower().StartsWith("excludelist:")) { @@ -242,7 +210,7 @@ namespace OpenSim } if (!skip) { - ReadLinkFromConfig(cs.Configs[i]); + ReadLinkFromConfig(cs.Configs[i], scene); } } } @@ -253,7 +221,7 @@ namespace OpenSim } - private void ReadLinkFromConfig(IConfig config) + private static void ReadLinkFromConfig(IConfig config, Scene scene) { RegionInfo regInfo; uint xloc, yloc; @@ -279,7 +247,7 @@ namespace OpenSim ((realYLoc - yloc < 3896) || (yloc - realYLoc < 3896)))) { if ( - HGHyperlink.TryCreateLink(m_sceneManager.CurrentOrFirstScene, null, xloc, yloc, "", externalPort, + HGHyperlink.TryCreateLink(scene, null, xloc, yloc, "", externalPort, externalHostName, out regInfo)) { regInfo.RegionName = config.GetString("localName", ""); @@ -288,14 +256,14 @@ namespace OpenSim } - private void LinkRegionCmdUsage() + private static void LinkRegionCmdUsage() { m_log.Info("Usage: link-region :[:]"); m_log.Info("Usage: link-region []"); m_log.Info("Usage: link-region []"); } - private void UnlinkRegionCmdUsage() + private static void UnlinkRegionCmdUsage() { m_log.Info("Usage: unlink-region :"); m_log.Info("Usage: unlink-region "); diff --git a/OpenSim/Region/Application/OpenSim.cs b/OpenSim/Region/Application/OpenSim.cs index a0b9568e66..d3941d6302 100644 --- a/OpenSim/Region/Application/OpenSim.cs +++ b/OpenSim/Region/Application/OpenSim.cs @@ -291,6 +291,16 @@ namespace OpenSim "reset user password [ [ []]]", "Reset a user password", HandleResetUserPassword); } + + m_console.Commands.AddCommand("hypergrid", false, "link-mapping", "link-mapping [ ] ", + "Set local coordinate to map HG regions to", RunCommand); + m_console.Commands.AddCommand("hypergrid", false, "link-region", + "link-region :[:] ", + "Link a hypergrid region", RunCommand); + m_console.Commands.AddCommand("hypergrid", false, "unlink-region", + "unlink-region or : ", + "Unlink a hypergrid region", RunCommand); + } public override void ShutdownSpecific() @@ -625,6 +635,12 @@ namespace OpenSim m_sceneManager.CacheJ2kDecode(1); } break; + + case "link-region": + case "unlink-region": + case "link-mapping": + HGCommands.RunHGCommand(command, cmdparams, m_sceneManager.CurrentOrFirstScene); + break; } } diff --git a/OpenSim/Region/Application/OpenSimBase.cs b/OpenSim/Region/Application/OpenSimBase.cs index 286c5a1ace..6838ab5609 100644 --- a/OpenSim/Region/Application/OpenSimBase.cs +++ b/OpenSim/Region/Application/OpenSimBase.cs @@ -736,6 +736,11 @@ namespace OpenSim protected override Scene CreateScene(RegionInfo regionInfo, StorageManager storageManager, AgentCircuitManager circuitManager) { + bool hgrid = ConfigSource.Source.Configs["Startup"].GetBoolean("hypergrid", false); + if (hgrid) + return HGCommands.CreateScene(regionInfo, circuitManager, m_commsManager, + storageManager, m_moduleLoader, m_configSettings, m_config, m_version); + SceneCommunicationService sceneGridService = new SceneCommunicationService(m_commsManager); return new Scene( diff --git a/bin/OpenSim.ini.example b/bin/OpenSim.ini.example index 01a15729cb..550162ac3a 100644 --- a/bin/OpenSim.ini.example +++ b/bin/OpenSim.ini.example @@ -22,6 +22,9 @@ ; Set this to true if you are connecting your OpenSimulator regions to a grid ; Set this to false if you are running OpenSimulator in standalone mode gridmode = false + + ; Set this to true if you want this OpenSimulator to run the Hypergrid functionality + hypergrid = false startup_console_commands_file = "startup_commands.txt" shutdown_console_commands_file = "shutdown_commands.txt"