From bc56efd1d238de8f990563aec3a77036b1f28fcf Mon Sep 17 00:00:00 2001 From: Justin Clarke Casey Date: Fri, 30 May 2008 18:32:18 +0000 Subject: * Hook up archive loading to load in prim xml data * This now has equivalent functionality to load-xml2 - no asset data is restored yet --- .../Modules/World/Archiver/ArchiveReadRequest.cs | 5 ++- .../Modules/World/Serialiser/IRegionSerialiser.cs | 15 ++++++- .../Modules/World/Serialiser/SceneXmlLoader.cs | 51 ++++++++++++++-------- .../Modules/World/Serialiser/SerialiserModule.cs | 5 +++ 4 files changed, 57 insertions(+), 19 deletions(-) (limited to 'OpenSim/Region/Environment/Modules') diff --git a/OpenSim/Region/Environment/Modules/World/Archiver/ArchiveReadRequest.cs b/OpenSim/Region/Environment/Modules/World/Archiver/ArchiveReadRequest.cs index 6ad11ee..d3f0cbc 100644 --- a/OpenSim/Region/Environment/Modules/World/Archiver/ArchiveReadRequest.cs +++ b/OpenSim/Region/Environment/Modules/World/Archiver/ArchiveReadRequest.cs @@ -26,7 +26,9 @@ */ using OpenSim.Region.Environment.Scenes; +using OpenSim.Region.Environment.Modules.World.Serialiser; using System; +using System.IO; using System.Reflection; using log4net; @@ -85,7 +87,8 @@ namespace OpenSim.Region.Environment.Modules.World.Archiver // Reload serialized prims m_log.InfoFormat("[ARCHIVER]: Loading prim data"); - //m_scene.LoadPrimsFromXml2( + IRegionSerialiser serialiser = m_scene.RequestModuleInterface(); + serialiser.LoadPrimsFromXml2(m_scene, new StringReader(serializedPrims)); } } } diff --git a/OpenSim/Region/Environment/Modules/World/Serialiser/IRegionSerialiser.cs b/OpenSim/Region/Environment/Modules/World/Serialiser/IRegionSerialiser.cs index 752b5b6..b7ed9f9 100644 --- a/OpenSim/Region/Environment/Modules/World/Serialiser/IRegionSerialiser.cs +++ b/OpenSim/Region/Environment/Modules/World/Serialiser/IRegionSerialiser.cs @@ -27,6 +27,7 @@ using libsecondlife; using System.Collections.Generic; +using System.IO; using OpenSim.Region.Environment.Scenes; namespace OpenSim.Region.Environment.Modules.World.Serialiser @@ -38,9 +39,21 @@ namespace OpenSim.Region.Environment.Modules.World.Serialiser void LoadPrimsFromXml(Scene scene, string fileName, bool newIDS, LLVector3 loadOffset); void SavePrimsToXml(Scene scene, string fileName); - + + /// + /// Load prims from the xml2 format + /// + /// + /// void LoadPrimsFromXml2(Scene scene, string fileName); + /// + /// Load prims from the xml2 format + /// + /// + /// + void LoadPrimsFromXml2(Scene scene, TextReader reader); + void SavePrimsToXml2(Scene scene, string fileName); void LoadGroupFromXml2String(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 7f51b58..2ac0754 100644 --- a/OpenSim/Region/Environment/Modules/World/Serialiser/SceneXmlLoader.cs +++ b/OpenSim/Region/Environment/Modules/World/Serialiser/SceneXmlLoader.cs @@ -147,26 +147,43 @@ namespace OpenSim.Region.Environment.Scenes } } + /// + /// Load prims from the xml2 format + /// + /// + /// public static void LoadPrimsFromXml2(Scene scene, string fileName) { - XmlDocument doc = new XmlDocument(); - XmlNode rootNode; - if (fileName.StartsWith("http:") || File.Exists(fileName)) - { - XmlTextReader reader = new XmlTextReader(fileName); - reader.WhitespaceHandling = WhitespaceHandling.None; - doc.Load(reader); - reader.Close(); - rootNode = doc.FirstChild; - foreach (XmlNode aPrimNode in rootNode.ChildNodes) - { - CreatePrimFromXml(scene, aPrimNode.OuterXml); - } - } - else + LoadPrimsFromXml2(scene, new XmlTextReader(fileName)); + } + + /// + /// Load prims from the xml2 format + /// + /// + /// + public static void LoadPrimsFromXml2(Scene scene, TextReader reader) + { + LoadPrimsFromXml2(scene, new XmlTextReader(reader)); + } + + /// + /// Load prims from the xml2 format. This method will close the reader + /// + /// + /// + protected static void LoadPrimsFromXml2(Scene scene, XmlTextReader reader) + { + XmlDocument doc = new XmlDocument(); + reader.WhitespaceHandling = WhitespaceHandling.None; + doc.Load(reader); + reader.Close(); + XmlNode rootNode = doc.FirstChild; + + foreach (XmlNode aPrimNode in rootNode.ChildNodes) { - throw new Exception("Could not open file " + fileName + " for reading"); - } + CreatePrimFromXml(scene, aPrimNode.OuterXml); + } } public static void CreatePrimFromXml(Scene scene, string xmlData) diff --git a/OpenSim/Region/Environment/Modules/World/Serialiser/SerialiserModule.cs b/OpenSim/Region/Environment/Modules/World/Serialiser/SerialiserModule.cs index bfa0a43..b181fe8 100644 --- a/OpenSim/Region/Environment/Modules/World/Serialiser/SerialiserModule.cs +++ b/OpenSim/Region/Environment/Modules/World/Serialiser/SerialiserModule.cs @@ -101,6 +101,11 @@ namespace OpenSim.Region.Environment.Modules.World.Serialiser { SceneXmlLoader.LoadPrimsFromXml2(scene, fileName); } + + public void LoadPrimsFromXml2(Scene scene, TextReader reader) + { + SceneXmlLoader.LoadPrimsFromXml2(scene, reader); + } public void SavePrimsToXml2(Scene scene, string fileName) { -- cgit v1.1