From 0c94da830557fe17f2ff40b04031255375397717 Mon Sep 17 00:00:00 2001 From: Justin Clarke Casey Date: Thu, 22 May 2008 22:21:58 +0000 Subject: * Plug in stubbed out archiver module --- OpenSim/Region/Application/OpenSimMainConsole.cs | 6 +- .../Environment/Modules/Avatar/Chat/ChatModule.cs | 4 +- .../Modules/World/Archiver/ArchiverModule.cs | 70 ++++++++++++++++++++++ .../Modules/World/Archiver/IRegionArchiver.cs | 51 ++++++++++++++++ OpenSim/Region/Environment/Scenes/Scene.cs | 27 +++++++-- OpenSim/Region/Environment/Scenes/SceneManager.cs | 8 +-- 6 files changed, 154 insertions(+), 12 deletions(-) create mode 100644 OpenSim/Region/Environment/Modules/World/Archiver/ArchiverModule.cs create mode 100644 OpenSim/Region/Environment/Modules/World/Archiver/IRegionArchiver.cs diff --git a/OpenSim/Region/Application/OpenSimMainConsole.cs b/OpenSim/Region/Application/OpenSimMainConsole.cs index e093878..dd14c59 100644 --- a/OpenSim/Region/Application/OpenSimMainConsole.cs +++ b/OpenSim/Region/Application/OpenSimMainConsole.cs @@ -361,13 +361,15 @@ namespace OpenSim break; case "save-oar": + m_log.Error("[CONSOLE]: Don't use me - I haven't yet been sufficiently implemented!"); + if (cmdparams.Length > 0) { - m_sceneManager.SaveCurrentSceneToOar(cmdparams[0]); + m_sceneManager.SaveCurrentSceneToArchive(cmdparams[0]); } else { - m_sceneManager.SaveCurrentSceneToOar(DEFAULT_OAR_BACKUP_FILENAME); + m_sceneManager.SaveCurrentSceneToArchive(DEFAULT_OAR_BACKUP_FILENAME); } break; diff --git a/OpenSim/Region/Environment/Modules/Avatar/Chat/ChatModule.cs b/OpenSim/Region/Environment/Modules/Avatar/Chat/ChatModule.cs index a72010c..825fb8f 100644 --- a/OpenSim/Region/Environment/Modules/Avatar/Chat/ChatModule.cs +++ b/OpenSim/Region/Environment/Modules/Avatar/Chat/ChatModule.cs @@ -815,8 +815,8 @@ namespace OpenSim.Region.Environment.Modules.Avatar.Chat public void eventIrcMode(string[] commArgs) { - string IrcChannel = commArgs[2]; - string IrcUser = commArgs[0].Split('!')[0]; + //string IrcChannel = commArgs[2]; + //string IrcUser = commArgs[0].Split('!')[0]; string UserMode = ""; for (int i = 3; i < commArgs.Length; i++) { diff --git a/OpenSim/Region/Environment/Modules/World/Archiver/ArchiverModule.cs b/OpenSim/Region/Environment/Modules/World/Archiver/ArchiverModule.cs new file mode 100644 index 0000000..cba04c4 --- /dev/null +++ b/OpenSim/Region/Environment/Modules/World/Archiver/ArchiverModule.cs @@ -0,0 +1,70 @@ +/* + * 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.Interfaces; +using OpenSim.Region.Environment.Scenes; +using System.Reflection; +using log4net; +using Nini.Config; + +namespace OpenSim.Region.Environment.Modules.World.Archiver +{ + /// + /// This module loads and saves OpenSimulator archives + /// + public class ArchiverModule : IRegionModule, IRegionArchiver + { + private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); + + public string Name { get { return "ArchiverModule"; } } + + public bool IsSharedModule { get { return true; } } + + public void Initialise(Scene scene, IConfigSource source) + { + scene.RegisterModuleInterface(this); + } + + public void PostInitialise() + { + } + + public void Close() + { + } + + public void ArchiveRegion(Scene scene, string savePath) + { + m_log.Warn("[ARCHIVER]: Archive region not yet implemented"); + } + + public void DearchiveRegion(Scene scene, string loadPath) + { + m_log.Warn("[ARCHIVER]: Dearchive region not yet implemented"); + } + } +} \ No newline at end of file diff --git a/OpenSim/Region/Environment/Modules/World/Archiver/IRegionArchiver.cs b/OpenSim/Region/Environment/Modules/World/Archiver/IRegionArchiver.cs new file mode 100644 index 0000000..1cebb50 --- /dev/null +++ b/OpenSim/Region/Environment/Modules/World/Archiver/IRegionArchiver.cs @@ -0,0 +1,51 @@ +/* + * 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 a region to the given path + /// + /// + /// + void ArchiveRegion(Scene scene, string savePath); + + /// + /// Dearchive the given region archive into the scene + /// + /// + /// + void DearchiveRegion(Scene scene, string loadPath); + } +} diff --git a/OpenSim/Region/Environment/Scenes/Scene.cs b/OpenSim/Region/Environment/Scenes/Scene.cs index 8c95a0d..3ede889 100644 --- a/OpenSim/Region/Environment/Scenes/Scene.cs +++ b/OpenSim/Region/Environment/Scenes/Scene.cs @@ -40,6 +40,7 @@ using OpenSim.Framework.Communications; using OpenSim.Framework.Communications.Cache; using OpenSim.Framework.Servers; using OpenSim.Region.Environment.Interfaces; +using OpenSim.Region.Environment.Modules.World.Archiver; using OpenSim.Region.Environment.Modules.World.Terrain; using OpenSim.Region.Environment.Scenes.Scripting; using OpenSim.Region.Physics.Manager; @@ -58,7 +59,6 @@ namespace OpenSim.Region.Environment.Scenes public SynchronizeSceneHandler SynchronizeScene = null; public int splitID = 0; - #region Fields protected Timer m_heartbeatTimer = new Timer(); @@ -138,7 +138,6 @@ namespace OpenSim.Region.Environment.Scenes private int m_update_terrain = 50; private int m_update_land = 1; - private int frameMS = 0; private int physicsMS2 = 0; private int physicsMS = 0; @@ -631,7 +630,7 @@ namespace OpenSim.Region.Environment.Scenes } /// - /// Sets up references to loaded modules required by thie scene + /// Sets up references to modules required by the scene /// public void SetModuleInterfaces() { @@ -1043,7 +1042,7 @@ namespace OpenSim.Region.Environment.Scenes //} //else //{ - float tmpval = (float)hm[x, y]; + //float tmpval = (float)hm[x, y]; float heightvalue = (float)hm[x, y]; if ((float)heightvalue > m_regInfo.EstateSettings.waterHeight) @@ -1380,6 +1379,26 @@ namespace OpenSim.Region.Environment.Scenes { m_sceneXmlLoader.SavePrimsToXml2(fileName); } + + /// + /// Load a prim archive into the scene. This loads both prims and their assets. + /// + /// + public void LoadPrimsFromArchive(string filePath) + { + IRegionArchiver archiver = RequestModuleInterface(); + archiver.DearchiveRegion(this, filePath); + } + + /// + /// Save the prims in the scene to an archive. This saves both prims and their assets. + /// + /// + public void SavePrimsToArchive(string filePath) + { + IRegionArchiver archiver = RequestModuleInterface(); + archiver.ArchiveRegion(this, filePath); + } /// /// Locate New region Handle and offset the prim position for the new region diff --git a/OpenSim/Region/Environment/Scenes/SceneManager.cs b/OpenSim/Region/Environment/Scenes/SceneManager.cs index 68dfa2f..2baef9d 100644 --- a/OpenSim/Region/Environment/Scenes/SceneManager.cs +++ b/OpenSim/Region/Environment/Scenes/SceneManager.cs @@ -199,9 +199,9 @@ namespace OpenSim.Region.Environment.Scenes /// as well as the details of the prims themselves. /// /// - public void SaveCurrentSceneToOar(string filename) + public void SaveCurrentSceneToArchive(string filename) { - // TODO Nothing yet + CurrentOrFirstScene.LoadPrimsFromArchive(filename); } /// @@ -209,9 +209,9 @@ namespace OpenSim.Region.Environment.Scenes /// their assets to the asset service. /// /// - public void LoadCurrentSceneFromOar(string filename) + public void LoadCurrentSceneFromArchive(string filename) { - // TODO Nothing yet + CurrentOrFirstScene.SavePrimsToArchive(filename); } [Obsolete("TODO: Remove this warning by 0.7")] -- cgit v1.1