From 583fa73126e425d98f12a6e5cef5487a3eb48e52 Mon Sep 17 00:00:00 2001 From: Justin Clarke Casey Date: Fri, 19 Dec 2008 18:33:03 +0000 Subject: * refactor: Remove archiver module scene wrappers --- .../RemoteController/RemoteAdminPlugin.cs | 17 ++++++-- .../Interfaces/IRegionArchiverModule.cs | 47 +++++++++++++++++++++ .../Modules/World/Archiver/ArchiverModule.cs | 11 +++-- .../Modules/World/Archiver/IRegionArchiver.cs | 49 ---------------------- OpenSim/Region/Environment/Scenes/Scene.cs | 24 ----------- OpenSim/Region/Environment/Scenes/SceneManager.cs | 8 +++- 6 files changed, 73 insertions(+), 83 deletions(-) create mode 100644 OpenSim/Region/Environment/Interfaces/IRegionArchiverModule.cs delete mode 100644 OpenSim/Region/Environment/Modules/World/Archiver/IRegionArchiver.cs (limited to 'OpenSim') diff --git a/OpenSim/ApplicationPlugins/RemoteController/RemoteAdminPlugin.cs b/OpenSim/ApplicationPlugins/RemoteController/RemoteAdminPlugin.cs index 2c5adfe..4645ee6 100644 --- a/OpenSim/ApplicationPlugins/RemoteController/RemoteAdminPlugin.cs +++ b/OpenSim/ApplicationPlugins/RemoteController/RemoteAdminPlugin.cs @@ -37,9 +37,9 @@ using Nini.Config; using Nwc.XmlRpc; using OpenSim.Framework; using OpenSim.Framework.Servers; +using OpenSim.Region.Environment.Interfaces; using OpenSim.Region.Environment.Modules.World.Terrain; using OpenSim.Region.Environment.Scenes; -using OpenSim.Region.Environment.Modules.World.Archiver; namespace OpenSim.ApplicationPlugins.RemoteController { @@ -1082,9 +1082,14 @@ namespace OpenSim.ApplicationPlugins.RemoteController } else throw new Exception("neither region_name nor region_uuid given"); - new ArchiveReadRequest(scene, filename); + IRegionArchiverModule archiver = scene.RequestModuleInterface(); + if (archiver != null) + archiver.DearchiveRegion(filename); + else + throw new Exception("Archiver module not present for scene"); + responseData["loaded"] = "true"; - + response.Value = responseData; } catch (Exception e) @@ -1173,7 +1178,11 @@ namespace OpenSim.ApplicationPlugins.RemoteController } else throw new Exception("neither region_name nor region_uuid given"); - scene.SavePrimsToArchive(filename); + IRegionArchiverModule archiver = scene.RequestModuleInterface(); + if (archiver != null) + archiver.ArchiveRegion(filename); + else + throw new Exception("Archiver module not present for scene"); responseData["saved"] = "true"; diff --git a/OpenSim/Region/Environment/Interfaces/IRegionArchiverModule.cs b/OpenSim/Region/Environment/Interfaces/IRegionArchiverModule.cs new file mode 100644 index 0000000..11eea20 --- /dev/null +++ b/OpenSim/Region/Environment/Interfaces/IRegionArchiverModule.cs @@ -0,0 +1,47 @@ +/* + * Copyright (c) Contributors, http://opensimulator.org/ + * See CONTRIBUTORS.TXT for a full list of copyright holders. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of the OpenSim Project nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +namespace OpenSim.Region.Environment.Interfaces +{ + /// + /// Interface to region archive functionality + /// + public interface IRegionArchiverModule + { + /// + /// Archive the region to the given path + /// + /// + void ArchiveRegion(string savePath); + + /// + /// Dearchive the given region archive into the scene + /// + /// + void DearchiveRegion(string loadPath); + } +} diff --git a/OpenSim/Region/Environment/Modules/World/Archiver/ArchiverModule.cs b/OpenSim/Region/Environment/Modules/World/Archiver/ArchiverModule.cs index df17ad2..de60472 100644 --- a/OpenSim/Region/Environment/Modules/World/Archiver/ArchiverModule.cs +++ b/OpenSim/Region/Environment/Modules/World/Archiver/ArchiverModule.cs @@ -40,9 +40,9 @@ namespace OpenSim.Region.Environment.Modules.World.Archiver /// /// This module loads and saves OpenSimulator archives /// - public class ArchiverModule : IRegionModule, IRegionArchiver + public class ArchiverModule : IRegionModule, IRegionArchiverModule { - // private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); + private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); /// /// Scene to which this module belongs @@ -58,8 +58,7 @@ namespace OpenSim.Region.Environment.Modules.World.Archiver public void Initialise(Scene scene, IConfigSource source) { m_scene = scene; - - m_scene.RegisterModuleInterface(this); + m_scene.RegisterModuleInterface(this); } public void PostInitialise() @@ -72,11 +71,15 @@ namespace OpenSim.Region.Environment.Modules.World.Archiver public void ArchiveRegion(string savePath) { + m_log.InfoFormat("[SCENE]: Writing archive for region {0} to {1}", m_scene.RegionInfo.RegionName, savePath); + new ArchiveWriteRequestPreparation(m_scene, savePath).ArchiveRegion(); } public void DearchiveRegion(string loadPath) { + m_log.InfoFormat("[SCENE]: Loading archive to region {0} from {1}", m_scene.RegionInfo.RegionName, loadPath); + new ArchiveReadRequest(m_scene, loadPath); } } diff --git a/OpenSim/Region/Environment/Modules/World/Archiver/IRegionArchiver.cs b/OpenSim/Region/Environment/Modules/World/Archiver/IRegionArchiver.cs deleted file mode 100644 index b949666..0000000 --- a/OpenSim/Region/Environment/Modules/World/Archiver/IRegionArchiver.cs +++ /dev/null @@ -1,49 +0,0 @@ -/* - * Copyright (c) Contributors, http://opensimulator.org/ - * See CONTRIBUTORS.TXT for a full list of copyright holders. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name of the OpenSim Project nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY - * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -using OpenSim.Region.Environment.Scenes; - -namespace OpenSim.Region.Environment.Modules.World.Archiver -{ - /// - /// Interface to region archive functionality - /// - public interface IRegionArchiver - { - /// - /// Archive the region to the given path - /// - /// - void ArchiveRegion(string savePath); - - /// - /// Dearchive the given region archive into the scene - /// - /// - void DearchiveRegion(string loadPath); - } -} diff --git a/OpenSim/Region/Environment/Scenes/Scene.cs b/OpenSim/Region/Environment/Scenes/Scene.cs index eecfd70..4272f22 100644 --- a/OpenSim/Region/Environment/Scenes/Scene.cs +++ b/OpenSim/Region/Environment/Scenes/Scene.cs @@ -142,7 +142,6 @@ namespace OpenSim.Region.Environment.Scenes protected IWorldComm m_worldCommModule; protected IAvatarFactory m_AvatarFactory; protected IConfigSource m_config; - protected IRegionArchiver m_archiver; protected IRegionSerialiser m_serialiser; // Central Update Loop @@ -729,7 +728,6 @@ namespace OpenSim.Region.Environment.Scenes m_worldCommModule = RequestModuleInterface(); XferManager = RequestModuleInterface(); m_AvatarFactory = RequestModuleInterface(); - m_archiver = RequestModuleInterface(); m_serialiser = RequestModuleInterface(); } @@ -1949,28 +1947,6 @@ namespace OpenSim.Region.Environment.Scenes } /// - /// Load a prim archive into the scene. This loads both prims and their assets. - /// - /// - public void LoadPrimsFromArchive(string filePath) - { - m_log.InfoFormat("[SCENE]: Loading archive to region {0} from {1}", RegionInfo.RegionName, filePath); - - m_archiver.DearchiveRegion(filePath); - } - - /// - /// Save the prims in the scene to an archive. This saves both prims and their assets. - /// - /// - public void SavePrimsToArchive(string filePath) - { - m_log.InfoFormat("[SCENE]: Writing archive for region {0} to {1}", RegionInfo.RegionName, filePath); - - m_archiver.ArchiveRegion(filePath); - } - - /// /// Move the given scene object into a new region depending on which region its absolute position has moved /// into. /// diff --git a/OpenSim/Region/Environment/Scenes/SceneManager.cs b/OpenSim/Region/Environment/Scenes/SceneManager.cs index bb74c20..6072b70 100644 --- a/OpenSim/Region/Environment/Scenes/SceneManager.cs +++ b/OpenSim/Region/Environment/Scenes/SceneManager.cs @@ -227,7 +227,9 @@ namespace OpenSim.Region.Environment.Scenes /// public void SaveCurrentSceneToArchive(string filename) { - CurrentOrFirstScene.SavePrimsToArchive(filename); + IRegionArchiverModule archiver = CurrentOrFirstScene.RequestModuleInterface(); + if (archiver != null) + archiver.ArchiveRegion(filename); } /// @@ -237,7 +239,9 @@ namespace OpenSim.Region.Environment.Scenes /// public void LoadArchiveToCurrentScene(string filename) { - CurrentOrFirstScene.LoadPrimsFromArchive(filename); + IRegionArchiverModule archiver = CurrentOrFirstScene.RequestModuleInterface(); + if (archiver != null) + archiver.DearchiveRegion(filename); } public string SaveCurrentSceneMapToXmlString() -- cgit v1.1