From 33e7c09b7b894551b35fb8ab29133c96a5d7b037 Mon Sep 17 00:00:00 2001 From: MW Date: Thu, 26 Feb 2009 20:01:20 +0000 Subject: Added IRegistryCore and RegistryCore to OpenSim.Framework. Added a ApplicationRegistry to OpenSimBase. Changed LoadRegionsPlugin so it registers itself to that application registry. Added a event to LoadRegionsPlugin, that is triggered when it creates a new scene ,although maybe this event should actually be in opensimBase incase other plugins are creating regions (like the RemoteAdminPlugin). --- OpenSim/Region/Application/HGOpenSimNode.cs | 2 +- OpenSim/Region/Application/OpenSim.cs | 67 ++++++++++++++++------------- OpenSim/Region/Application/OpenSimBase.cs | 34 ++++++++++----- 3 files changed, 60 insertions(+), 43 deletions(-) (limited to 'OpenSim/Region/Application') diff --git a/OpenSim/Region/Application/HGOpenSimNode.cs b/OpenSim/Region/Application/HGOpenSimNode.cs index ded6443..1130c70 100644 --- a/OpenSim/Region/Application/HGOpenSimNode.cs +++ b/OpenSim/Region/Application/HGOpenSimNode.cs @@ -47,7 +47,7 @@ namespace OpenSim public class HGOpenSimNode : OpenSim { private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); - private IHyperlink HGServices = null; + public IHyperlink HGServices = null; private uint m_autoMappingX = 0; private uint m_autoMappingY = 0; diff --git a/OpenSim/Region/Application/OpenSim.cs b/OpenSim/Region/Application/OpenSim.cs index a17d92f..a8adf58 100644 --- a/OpenSim/Region/Application/OpenSim.cs +++ b/OpenSim/Region/Application/OpenSim.cs @@ -95,6 +95,40 @@ namespace OpenSim m_console.SetGuiMode(m_gui); MainConsole.Instance = m_console; + RegisterConsoleCommands(); + + base.StartupSpecific(); + + //Run Startup Commands + if (String.IsNullOrEmpty( m_startupCommandsFile )) + { + m_log.Info("[STARTUP]: No startup command script specified. Moving on..."); + } + else + { + RunCommandScript(m_startupCommandsFile); + } + + // Start timer script (run a script every xx seconds) + if (m_timedScript != "disabled") + { + m_scriptTimer = new Timer(); + m_scriptTimer.Enabled = true; + m_scriptTimer.Interval = 1200 * 1000; + m_scriptTimer.Elapsed += RunAutoTimerScript; + } + + PrintFileToConsole("startuplogo.txt"); + + // For now, start at the 'root' level by default + if (m_sceneManager.Scenes.Count == 1) // If there is only one region, select it + ChangeSelectedRegion("region", new string[] {"change", "region", m_sceneManager.Scenes[0].RegionInfo.RegionName}); + else + ChangeSelectedRegion("region", new string[] {"change", "region", "root"}); + } + + private void RegisterConsoleCommands() + { m_console.Commands.AddCommand("region", false, "clear assets", "clear assets", "Clear the asset cache", HandleClearAssets); @@ -255,35 +289,6 @@ namespace OpenSim "reset user password [ [ []]]", "Reset a user password", HandleResetUserPassword); } - - base.StartupSpecific(); - - //Run Startup Commands - if (String.IsNullOrEmpty( m_startupCommandsFile )) - { - m_log.Info("[STARTUP]: No startup command script specified. Moving on..."); - } - else - { - RunCommandScript(m_startupCommandsFile); - } - - // Start timer script (run a script every xx seconds) - if (m_timedScript != "disabled") - { - m_scriptTimer = new Timer(); - m_scriptTimer.Enabled = true; - m_scriptTimer.Interval = 1200 * 1000; - m_scriptTimer.Elapsed += RunAutoTimerScript; - } - - PrintFileToConsole("startuplogo.txt"); - - // For now, start at the 'root' level by default - if (m_sceneManager.Scenes.Count == 1) // If there is only one region, select it - ChangeSelectedRegion("region", new string[] {"change", "region", m_sceneManager.Scenes[0].RegionInfo.RegionName}); - else - ChangeSelectedRegion("region", new string[] {"change", "region", "root"}); } public override void ShutdownSpecific() @@ -410,9 +415,9 @@ namespace OpenSim { m_console.Error("Usage: create region "); } - - CreateRegion(new RegionInfo(cmd[2], regionFile, false, ConfigSource.Source), true); + IScene scene; + CreateRegion(new RegionInfo(cmd[2], regionFile, false, ConfigSource.Source), true, out scene); } private void HandleLoginEnable(string module, string[] cmd) diff --git a/OpenSim/Region/Application/OpenSimBase.cs b/OpenSim/Region/Application/OpenSimBase.cs index 4d809b0..2b74aa3 100644 --- a/OpenSim/Region/Application/OpenSimBase.cs +++ b/OpenSim/Region/Application/OpenSimBase.cs @@ -120,7 +120,14 @@ namespace OpenSim get { return m_moduleLoader; } set { m_moduleLoader = value; } } - protected ModuleLoader m_moduleLoader; + protected ModuleLoader m_moduleLoader; + + protected RegistryCore m_applicationRegistry = new RegistryCore(); + + public RegistryCore ApplicationRegistry + { + get { return m_applicationRegistry; } + } /// /// Constructor. @@ -176,7 +183,7 @@ namespace OpenSim base.StartupSpecific(); m_stats = StatsManager.StartCollectingSimExtraStats(); - + LibraryRootFolder libraryRootFolder = new LibraryRootFolder(m_configSettings.LibrariesXMLFile); // Standalone mode is determined by !startupConfig.GetBoolean("gridmode", false) @@ -194,6 +201,7 @@ namespace OpenSim m_moduleLoader = new ModuleLoader(m_config.Source); LoadPlugins(); + foreach (IApplicationPlugin plugin in m_plugins) { @@ -202,7 +210,10 @@ namespace OpenSim // Only enable logins to the regions once we have completely finished starting up (apart from scripts) - m_commsManager.GridService.RegionLoginsEnabled = true; + if ((m_commsManager != null) && (m_commsManager.GridService != null)) + { + m_commsManager.GridService.RegionLoginsEnabled = true; + } // If console exists add plugin commands. if (m_console != null) @@ -541,9 +552,9 @@ namespace OpenSim /// /// /// - public IClientNetworkServer CreateRegion(RegionInfo regionInfo, bool portadd_flag) + public IClientNetworkServer CreateRegion(RegionInfo regionInfo, bool portadd_flag, out IScene scene) { - return CreateRegion(regionInfo, portadd_flag, false); + return CreateRegion(regionInfo, portadd_flag, false, out scene); } /// @@ -551,9 +562,9 @@ namespace OpenSim /// /// /// - public IClientNetworkServer CreateRegion(RegionInfo regionInfo) + public IClientNetworkServer CreateRegion(RegionInfo regionInfo, out IScene scene) { - return CreateRegion(regionInfo, false, true); + return CreateRegion(regionInfo, false, true, out scene); } /// @@ -563,7 +574,7 @@ namespace OpenSim /// /// /// - public IClientNetworkServer CreateRegion(RegionInfo regionInfo, bool portadd_flag, bool do_post_init) + public IClientNetworkServer CreateRegion(RegionInfo regionInfo, bool portadd_flag, bool do_post_init, out IScene mscene) { int port = regionInfo.InternalEndPoint.Port; @@ -640,6 +651,7 @@ namespace OpenSim } } + mscene = scene; return clientServer; } @@ -722,8 +734,8 @@ namespace OpenSim m_clientServers[clientServerElement].Server.Close(); m_clientServers.RemoveAt(clientServerElement); } - - CreateRegion(whichRegion, true); + IScene scene; + CreateRegion(whichRegion, true, out scene); } # region Setup methods @@ -738,7 +750,7 @@ namespace OpenSim /// Handler to supply the current status of this sim /// /// Currently this is always OK if the simulator is still listening for connections on its HTTP service - protected class SimStatusHandler : IStreamedRequestHandler + public class SimStatusHandler : IStreamedRequestHandler { public byte[] Handle(string path, Stream request, OSHttpRequest httpRequest, OSHttpResponse httpResponse) -- cgit v1.1