diff --git a/OpenSim/ApplicationPlugins/RemoteController/RemoteAdminPlugin.cs b/OpenSim/ApplicationPlugins/RemoteController/RemoteAdminPlugin.cs index 2c5adfedb5..4645ee6365 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/Modules/World/Archiver/IRegionArchiver.cs b/OpenSim/Region/Environment/Interfaces/IRegionArchiverModule.cs similarity index 93% rename from OpenSim/Region/Environment/Modules/World/Archiver/IRegionArchiver.cs rename to OpenSim/Region/Environment/Interfaces/IRegionArchiverModule.cs index b9496665f0..11eea202bd 100644 --- a/OpenSim/Region/Environment/Modules/World/Archiver/IRegionArchiver.cs +++ b/OpenSim/Region/Environment/Interfaces/IRegionArchiverModule.cs @@ -25,14 +25,12 @@ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -using OpenSim.Region.Environment.Scenes; - -namespace OpenSim.Region.Environment.Modules.World.Archiver +namespace OpenSim.Region.Environment.Interfaces { /// /// Interface to region archive functionality /// - public interface IRegionArchiver + public interface IRegionArchiverModule { /// /// Archive the region to the given path diff --git a/OpenSim/Region/Environment/Modules/World/Archiver/ArchiverModule.cs b/OpenSim/Region/Environment/Modules/World/Archiver/ArchiverModule.cs index df17ad2bec..de604721f9 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/Scenes/Scene.cs b/OpenSim/Region/Environment/Scenes/Scene.cs index eecfd70c02..4272f22da0 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(); } @@ -1948,28 +1946,6 @@ namespace OpenSim.Region.Environment.Scenes m_serialiser.SavePrimListToXml2(primList, fileName); } - /// - /// 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 bb74c20724..6072b709d3 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()