aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/Environment/Modules/World/Archiver/ArchiveReadRequest.cs
diff options
context:
space:
mode:
Diffstat (limited to 'OpenSim/Region/Environment/Modules/World/Archiver/ArchiveReadRequest.cs')
-rw-r--r--OpenSim/Region/Environment/Modules/World/Archiver/ArchiveReadRequest.cs35
1 files changed, 8 insertions, 27 deletions
diff --git a/OpenSim/Region/Environment/Modules/World/Archiver/ArchiveReadRequest.cs b/OpenSim/Region/Environment/Modules/World/Archiver/ArchiveReadRequest.cs
index 26fc1a6..8d882ea 100644
--- a/OpenSim/Region/Environment/Modules/World/Archiver/ArchiveReadRequest.cs
+++ b/OpenSim/Region/Environment/Modules/World/Archiver/ArchiveReadRequest.cs
@@ -29,6 +29,7 @@ using OpenSim.Framework;
29using OpenSim.Region.Environment.Scenes; 29using OpenSim.Region.Environment.Scenes;
30using OpenSim.Region.Environment.Modules.World.Serialiser; 30using OpenSim.Region.Environment.Modules.World.Serialiser;
31using System; 31using System;
32using System.Collections.Generic;
32using System.IO; 33using System.IO;
33using System.Reflection; 34using System.Reflection;
34using System.Xml; 35using System.Xml;
@@ -62,9 +63,7 @@ namespace OpenSim.Region.Environment.Modules.World.Archiver
62 TarArchiveReader archive = new TarArchiveReader(m_loadPath); 63 TarArchiveReader archive = new TarArchiveReader(m_loadPath);
63 AssetsDearchiver dearchiver = new AssetsDearchiver(m_scene.AssetCache); 64 AssetsDearchiver dearchiver = new AssetsDearchiver(m_scene.AssetCache);
64 65
65 string serializedPrims = string.Empty; 66 List<string> serialisedSceneObjects = new List<string>();
66
67 // Just test for now by reading first file
68 string filePath = "ERROR"; 67 string filePath = "ERROR";
69 68
70 byte[] data; 69 byte[] data;
@@ -73,9 +72,9 @@ namespace OpenSim.Region.Environment.Modules.World.Archiver
73 m_log.DebugFormat( 72 m_log.DebugFormat(
74 "[ARCHIVER]: Successfully read {0} ({1} bytes) from archive {2}", filePath, data.Length, m_loadPath); 73 "[ARCHIVER]: Successfully read {0} ({1} bytes) from archive {2}", filePath, data.Length, m_loadPath);
75 74
76 if (filePath.Equals(ArchiveConstants.PRIMS_PATH)) 75 if (filePath.StartsWith(ArchiveConstants.OBJECTS_PATH))
77 { 76 {
78 serializedPrims = m_asciiEncoding.GetString(data); 77 serialisedSceneObjects.Add(m_asciiEncoding.GetString(data));
79 } 78 }
80 else if (filePath.Equals(ArchiveConstants.ASSETS_METADATA_PATH)) 79 else if (filePath.Equals(ArchiveConstants.ASSETS_METADATA_PATH))
81 { 80 {
@@ -92,35 +91,17 @@ namespace OpenSim.Region.Environment.Modules.World.Archiver
92 91
93 archive.Close(); 92 archive.Close();
94 93
95 if (serializedPrims.Equals(string.Empty))
96 {
97 m_log.ErrorFormat("[ARCHIVER]: Archive did not contain a {0} file", ArchiveConstants.PRIMS_PATH);
98 return;
99 }
100
101 // Reload serialized prims 94 // Reload serialized prims
102 m_log.InfoFormat("[ARCHIVER]: Loading scene objects"); 95 m_log.InfoFormat("[ARCHIVER]: Loading {0} scene objects", serialisedSceneObjects.Count);
103 96
104 IRegionSerialiser serialiser = m_scene.RequestModuleInterface<IRegionSerialiser>(); 97 IRegionSerialiser serialiser = m_scene.RequestModuleInterface<IRegionSerialiser>();
105
106 // Temporary code to read each sog in the file separately, pending actually having these in separate files
107 XmlTextReader xtr = new XmlTextReader(new StringReader(serializedPrims));
108 XmlDocument doc = new XmlDocument();
109 xtr.WhitespaceHandling = WhitespaceHandling.None;
110 doc.Load(xtr);
111 xtr.Close();
112 XmlNode sceneNode = doc.FirstChild;
113 int count = 0;
114 98
115 foreach (XmlNode objectNode in sceneNode.ChildNodes) 99 foreach (string serialisedSceneObject in serialisedSceneObjects)
116 { 100 {
117 serialiser.LoadGroupFromXml2(m_scene, objectNode.OuterXml.ToString()); 101 serialiser.LoadGroupFromXml2(m_scene, serialisedSceneObject);
118 count++;
119 } 102 }
120 103
121 //serialiser.LoadPrimsFromXml2(m_scene, new StringReader(serializedPrims)); 104 m_log.InfoFormat("[ARCHIVER]: Successfully loaded archive");
122
123 m_log.DebugFormat("[ARCHIVER]: Loaded {0} scene objects", count);
124 } 105 }
125 } 106 }
126} 107}