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
(limited to 'OpenSim/Region')
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