From a89385818d35dd991aa29f835fdb742e0923c26e Mon Sep 17 00:00:00 2001 From: Justin Clarke Casey Date: Sat, 12 Jul 2008 22:14:38 +0000 Subject: * On archive loading, tell the user how many objects we are ignoring because they already exist in the scene * (ability to give objects new uuids will come later) --- OpenSim/Region/DataSnapshot/DataSnapshotManager.cs | 5 +---- .../Modules/World/Archiver/ArchiveReadRequest.cs | 16 +++++++++++++--- .../Modules/World/Serialiser/IRegionSerialiser.cs | 2 +- .../Modules/World/Serialiser/SceneXmlLoader.cs | 9 +++++---- OpenSim/Region/Environment/Scenes/InnerScene.cs | 14 +++++++++----- OpenSim/Region/Environment/Scenes/Scene.cs | 8 ++++---- .../Region/ScriptEngine/DotNetEngine/ScriptManager.cs | 2 +- 7 files changed, 34 insertions(+), 22 deletions(-) diff --git a/OpenSim/Region/DataSnapshot/DataSnapshotManager.cs b/OpenSim/Region/DataSnapshot/DataSnapshotManager.cs index 55ef047..5233139 100644 --- a/OpenSim/Region/DataSnapshot/DataSnapshotManager.cs +++ b/OpenSim/Region/DataSnapshot/DataSnapshotManager.cs @@ -85,10 +85,7 @@ namespace OpenSim.Region.DataSnapshot #region IRegionModule - public void Close() - { - m_log.Info("[DATASNAPSHOT]: Close called"); - } + public void Close() {} public void Initialise(Scene scene, IConfigSource config) { diff --git a/OpenSim/Region/Environment/Modules/World/Archiver/ArchiveReadRequest.cs b/OpenSim/Region/Environment/Modules/World/Archiver/ArchiveReadRequest.cs index 0e37197..c9f8fce 100644 --- a/OpenSim/Region/Environment/Modules/World/Archiver/ArchiveReadRequest.cs +++ b/OpenSim/Region/Environment/Modules/World/Archiver/ArchiveReadRequest.cs @@ -103,11 +103,14 @@ namespace OpenSim.Region.Environment.Modules.World.Archiver m_log.InfoFormat("[ARCHIVER]: Loading {0} scene objects", serialisedSceneObjects.Count); IRegionSerialiser serialiser = m_scene.RequestModuleInterface(); - ICollection sceneObjects = new List(); + ICollection sceneObjects = new List(); foreach (string serialisedSceneObject in serialisedSceneObjects) - { - sceneObjects.Add(serialiser.LoadGroupFromXml2(m_scene, serialisedSceneObject)); + { + SceneObjectGroup sceneObject = serialiser.LoadGroupFromXml2(m_scene, serialisedSceneObject); + + if (null != sceneObject) + sceneObjects.Add(sceneObject); } m_log.Debug("[ARCHIVER]: Starting scripts"); @@ -117,6 +120,13 @@ namespace OpenSim.Region.Environment.Modules.World.Archiver sceneObject.CreateScriptInstances(0, true); } + m_log.InfoFormat("[ARCHIVER]: Restored {0} objects to the scene", sceneObjects.Count); + + int ignoredObjects = serialisedSceneObjects.Count - sceneObjects.Count; + + if (ignoredObjects > 0) + m_log.WarnFormat("[ARCHIVER]: Ignored {0} objects that already existed in the scene", ignoredObjects); + m_log.InfoFormat("[ARCHIVER]: Successfully loaded archive"); } diff --git a/OpenSim/Region/Environment/Modules/World/Serialiser/IRegionSerialiser.cs b/OpenSim/Region/Environment/Modules/World/Serialiser/IRegionSerialiser.cs index 0fc8ac3..6e48f8e 100644 --- a/OpenSim/Region/Environment/Modules/World/Serialiser/IRegionSerialiser.cs +++ b/OpenSim/Region/Environment/Modules/World/Serialiser/IRegionSerialiser.cs @@ -85,7 +85,7 @@ namespace OpenSim.Region.Environment.Modules.World.Serialiser /// /// /// - /// The scene object created + /// The scene object created. null if the scene object already existed SceneObjectGroup LoadGroupFromXml2(Scene scene, string xmlString); /// diff --git a/OpenSim/Region/Environment/Modules/World/Serialiser/SceneXmlLoader.cs b/OpenSim/Region/Environment/Modules/World/Serialiser/SceneXmlLoader.cs index f283ecb..bd19a7e 100644 --- a/OpenSim/Region/Environment/Modules/World/Serialiser/SceneXmlLoader.cs +++ b/OpenSim/Region/Environment/Modules/World/Serialiser/SceneXmlLoader.cs @@ -180,14 +180,15 @@ namespace OpenSim.Region.Environment.Scenes /// /// /// - /// The scene object created + /// The scene object created. null if the scene object already existed protected static SceneObjectGroup CreatePrimFromXml2(Scene scene, string xmlData) { SceneObjectGroup obj = new SceneObjectGroup(xmlData); - scene.AddRestoredSceneObject(obj, true); - - return obj; + if (scene.AddRestoredSceneObject(obj, true)) + return obj; + else + return null; } public static void SavePrimsToXml2(Scene scene, string fileName) diff --git a/OpenSim/Region/Environment/Scenes/InnerScene.cs b/OpenSim/Region/Environment/Scenes/InnerScene.cs index 6a2b2d9..abd3387 100644 --- a/OpenSim/Region/Environment/Scenes/InnerScene.cs +++ b/OpenSim/Region/Environment/Scenes/InnerScene.cs @@ -196,7 +196,10 @@ namespace OpenSim.Region.Environment.Scenes /// If true, changes to the object will be reflected in its persisted data /// If false, the persisted data will not be changed even if the object in the scene is changed /// - protected internal void AddRestoredSceneObject(SceneObjectGroup sceneObject, bool attachToBackup) + /// + /// true if the object was added, false if an object with the same uuid was already in the scene + /// + protected internal bool AddRestoredSceneObject(SceneObjectGroup sceneObject, bool attachToBackup) { sceneObject.RegionHandle = m_regInfo.RegionHandle; sceneObject.SetScene(m_parentScene); @@ -208,7 +211,7 @@ namespace OpenSim.Region.Environment.Scenes sceneObject.UpdateParentIDs(); - AddSceneObject(sceneObject, attachToBackup); + return AddSceneObject(sceneObject, attachToBackup); } /// @@ -220,14 +223,15 @@ namespace OpenSim.Region.Environment.Scenes /// If true, the object is made persistent into the scene. /// If false, the object will not persist over server restarts /// - /// true if the object was added, false if an object with the same uuid was already in the scene + /// + /// true if the object was added, false if an object with the same uuid was already in the scene /// - protected internal void AddNewSceneObject(SceneObjectGroup sceneObject, bool attachToBackup) + protected internal bool AddNewSceneObject(SceneObjectGroup sceneObject, bool attachToBackup) { // Ensure that we persist this new scene object sceneObject.HasGroupChanged = true; - AddSceneObject(sceneObject, attachToBackup); + return AddSceneObject(sceneObject, attachToBackup); } /// diff --git a/OpenSim/Region/Environment/Scenes/Scene.cs b/OpenSim/Region/Environment/Scenes/Scene.cs index 05026c3..1564556 100644 --- a/OpenSim/Region/Environment/Scenes/Scene.cs +++ b/OpenSim/Region/Environment/Scenes/Scene.cs @@ -1665,9 +1665,9 @@ namespace OpenSim.Region.Environment.Scenes /// Add an object into the scene that has come from storage /// /// - public void AddRestoredSceneObject(SceneObjectGroup sceneObject, bool attachToBackup) + public bool AddRestoredSceneObject(SceneObjectGroup sceneObject, bool attachToBackup) { - m_innerScene.AddRestoredSceneObject(sceneObject, attachToBackup); + return m_innerScene.AddRestoredSceneObject(sceneObject, attachToBackup); } /// @@ -1678,9 +1678,9 @@ namespace OpenSim.Region.Environment.Scenes /// If true, the object is made persistent into the scene. /// If false, the object will not persist over server restarts /// - public void AddNewSceneObject(SceneObjectGroup sceneObject, bool attachToBackup) + public bool AddNewSceneObject(SceneObjectGroup sceneObject, bool attachToBackup) { - m_innerScene.AddNewSceneObject(sceneObject, attachToBackup); + return m_innerScene.AddNewSceneObject(sceneObject, attachToBackup); } /// diff --git a/OpenSim/Region/ScriptEngine/DotNetEngine/ScriptManager.cs b/OpenSim/Region/ScriptEngine/DotNetEngine/ScriptManager.cs index 016d045..ed20cd2 100644 --- a/OpenSim/Region/ScriptEngine/DotNetEngine/ScriptManager.cs +++ b/OpenSim/Region/ScriptEngine/DotNetEngine/ScriptManager.cs @@ -77,7 +77,7 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine if (null == m_host) { m_log.ErrorFormat( - "[{0}]: Could not get scene object part corresponding to localID {1} to start script", + "[{0}]: Could not find scene object part corresponding to localID {1} to start script", m_scriptEngine.ScriptEngineName, localID); return; -- cgit v1.1