aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/CoreModules/World/Archiver
diff options
context:
space:
mode:
authorJustin Clark-Casey (justincc)2010-10-16 05:38:44 +0100
committerJustin Clark-Casey (justincc)2010-10-16 05:38:44 +0100
commite41b23a1a4bef55d31f75e1227834da84cbd971a (patch)
treecf0a44403f242cd1aab6beee900e71e73fe0eff0 /OpenSim/Region/CoreModules/World/Archiver
parentHave OpenSim throw a strop if it tries to load an OAR with a major version th... (diff)
downloadopensim-SC_OLD-e41b23a1a4bef55d31f75e1227834da84cbd971a.zip
opensim-SC_OLD-e41b23a1a4bef55d31f75e1227834da84cbd971a.tar.gz
opensim-SC_OLD-e41b23a1a4bef55d31f75e1227834da84cbd971a.tar.bz2
opensim-SC_OLD-e41b23a1a4bef55d31f75e1227834da84cbd971a.tar.xz
change --old-guids switch on the save oar command line to --version=<x>
if x is 0, then an old version 0.3 archive is saved. If it is anything else or missing, then a version 1.0 archive is saved version 1.0 archives cannot be loaded on OpenSim 0.7.0.2 and earlier also add various informational notices about what version we've saving/loading
Diffstat (limited to '')
-rw-r--r--OpenSim/Region/CoreModules/World/Archiver/ArchiveReadRequest.cs2
-rw-r--r--OpenSim/Region/CoreModules/World/Archiver/ArchiveWriteRequestExecution.cs6
-rw-r--r--OpenSim/Region/CoreModules/World/Archiver/ArchiveWriteRequestPreparation.cs26
-rw-r--r--OpenSim/Region/CoreModules/World/Archiver/ArchiverModule.cs2
-rw-r--r--OpenSim/Region/CoreModules/World/Archiver/Tests/ArchiverTests.cs4
5 files changed, 31 insertions, 9 deletions
diff --git a/OpenSim/Region/CoreModules/World/Archiver/ArchiveReadRequest.cs b/OpenSim/Region/CoreModules/World/Archiver/ArchiveReadRequest.cs
index f1f5258..ae6e596 100644
--- a/OpenSim/Region/CoreModules/World/Archiver/ArchiveReadRequest.cs
+++ b/OpenSim/Region/CoreModules/World/Archiver/ArchiveReadRequest.cs
@@ -56,7 +56,7 @@ namespace OpenSim.Region.CoreModules.World.Archiver
56 /// The maximum major version of OAR that we can read. Minor versions shouldn't need a number since version 56 /// The maximum major version of OAR that we can read. Minor versions shouldn't need a number since version
57 /// bumps here should be compatible. 57 /// bumps here should be compatible.
58 /// </summary> 58 /// </summary>
59 public static int MAX_MAJOR_VERSION = 0; 59 public static int MAX_MAJOR_VERSION = 1;
60 60
61 protected Scene m_scene; 61 protected Scene m_scene;
62 protected Stream m_loadStream; 62 protected Stream m_loadStream;
diff --git a/OpenSim/Region/CoreModules/World/Archiver/ArchiveWriteRequestExecution.cs b/OpenSim/Region/CoreModules/World/Archiver/ArchiveWriteRequestExecution.cs
index d1fe1f5..79bec56 100644
--- a/OpenSim/Region/CoreModules/World/Archiver/ArchiveWriteRequestExecution.cs
+++ b/OpenSim/Region/CoreModules/World/Archiver/ArchiveWriteRequestExecution.cs
@@ -137,12 +137,16 @@ namespace OpenSim.Region.CoreModules.World.Archiver
137 137
138 m_log.InfoFormat("[ARCHIVER]: Added terrain information to archive."); 138 m_log.InfoFormat("[ARCHIVER]: Added terrain information to archive.");
139 139
140 Dictionary<string, object> serializationOptions = new Dictionary<string, object>();
141 if (m_options.ContainsKey("version") && (string)m_options["version"] == "0")
142 serializationOptions["old-guids"] = true;
143
140 // Write out scene object metadata 144 // Write out scene object metadata
141 foreach (SceneObjectGroup sceneObject in m_sceneObjects) 145 foreach (SceneObjectGroup sceneObject in m_sceneObjects)
142 { 146 {
143 //m_log.DebugFormat("[ARCHIVER]: Saving {0} {1}, {2}", entity.Name, entity.UUID, entity.GetType()); 147 //m_log.DebugFormat("[ARCHIVER]: Saving {0} {1}, {2}", entity.Name, entity.UUID, entity.GetType());
144 148
145 string serializedObject = m_serialiser.SerializeGroupToXml2(sceneObject, m_options); 149 string serializedObject = m_serialiser.SerializeGroupToXml2(sceneObject, serializationOptions);
146 m_archiveWriter.WriteFile(ArchiveHelpers.CreateObjectPath(sceneObject), serializedObject); 150 m_archiveWriter.WriteFile(ArchiveHelpers.CreateObjectPath(sceneObject), serializedObject);
147 } 151 }
148 152
diff --git a/OpenSim/Region/CoreModules/World/Archiver/ArchiveWriteRequestPreparation.cs b/OpenSim/Region/CoreModules/World/Archiver/ArchiveWriteRequestPreparation.cs
index bae1bdd..d21efed 100644
--- a/OpenSim/Region/CoreModules/World/Archiver/ArchiveWriteRequestPreparation.cs
+++ b/OpenSim/Region/CoreModules/World/Archiver/ArchiveWriteRequestPreparation.cs
@@ -172,7 +172,7 @@ namespace OpenSim.Region.CoreModules.World.Archiver
172 m_log.InfoFormat("[ARCHIVER]: Creating archive file. This may take some time."); 172 m_log.InfoFormat("[ARCHIVER]: Creating archive file. This may take some time.");
173 173
174 // Write out control file 174 // Write out control file
175 archiveWriter.WriteFile(ArchiveConstants.CONTROL_FILE_PATH, Create0p2ControlFile()); 175 archiveWriter.WriteFile(ArchiveConstants.CONTROL_FILE_PATH, Create0p2ControlFile(options));
176 m_log.InfoFormat("[ARCHIVER]: Added control file to archive."); 176 m_log.InfoFormat("[ARCHIVER]: Added control file to archive.");
177 177
178 new AssetsRequest( 178 new AssetsRequest(
@@ -184,15 +184,33 @@ namespace OpenSim.Region.CoreModules.World.Archiver
184 /// Create the control file for the most up to date archive 184 /// Create the control file for the most up to date archive
185 /// </summary> 185 /// </summary>
186 /// <returns></returns> 186 /// <returns></returns>
187 public static string Create0p2ControlFile() 187 public static string Create0p2ControlFile(Dictionary<string, object> options)
188 { 188 {
189 int majorVersion, minorVersion;
190 if (options.ContainsKey("version") && (string)options["version"] == "0")
191 {
192 majorVersion = 0;
193 minorVersion = 3;
194 }
195 else
196 {
197 majorVersion = 1;
198 minorVersion = 0;
199 }
200
201 m_log.InfoFormat("[ARCHIVER]: Creating version {0}.{1} OAR", majorVersion, minorVersion);
202 if (majorVersion == 1)
203 {
204 m_log.WarnFormat("[ARCHIVER]: Please be aware that version 1.0 OARs are not compatible with OpenSim 0.7.0.2 and earlier. Please use the --version=0 option if you want to produce a compatible OAR");
205 }
206
189 StringWriter sw = new StringWriter(); 207 StringWriter sw = new StringWriter();
190 XmlTextWriter xtw = new XmlTextWriter(sw); 208 XmlTextWriter xtw = new XmlTextWriter(sw);
191 xtw.Formatting = Formatting.Indented; 209 xtw.Formatting = Formatting.Indented;
192 xtw.WriteStartDocument(); 210 xtw.WriteStartDocument();
193 xtw.WriteStartElement("archive"); 211 xtw.WriteStartElement("archive");
194 xtw.WriteAttributeString("major_version", "0"); 212 xtw.WriteAttributeString("major_version", majorVersion.ToString());
195 xtw.WriteAttributeString("minor_version", "3"); 213 xtw.WriteAttributeString("minor_version", minorVersion.ToString());
196 214
197 xtw.WriteStartElement("creation_info"); 215 xtw.WriteStartElement("creation_info");
198 DateTime now = DateTime.UtcNow; 216 DateTime now = DateTime.UtcNow;
diff --git a/OpenSim/Region/CoreModules/World/Archiver/ArchiverModule.cs b/OpenSim/Region/CoreModules/World/Archiver/ArchiverModule.cs
index 98bdcd0..e0ad71e 100644
--- a/OpenSim/Region/CoreModules/World/Archiver/ArchiverModule.cs
+++ b/OpenSim/Region/CoreModules/World/Archiver/ArchiverModule.cs
@@ -125,7 +125,7 @@ namespace OpenSim.Region.CoreModules.World.Archiver
125 Dictionary<string, object> options = new Dictionary<string, object>(); 125 Dictionary<string, object> options = new Dictionary<string, object>();
126 126
127 OptionSet ops = new OptionSet(); 127 OptionSet ops = new OptionSet();
128 ops.Add("old|old-guids", delegate(string v) { options["old-guids"] = (v != null); }); 128 ops.Add("v|version=", delegate(string v) { options["version"] = v; });
129 129
130 List<string> mainParams = ops.Parse(cmdparams); 130 List<string> mainParams = ops.Parse(cmdparams);
131 131
diff --git a/OpenSim/Region/CoreModules/World/Archiver/Tests/ArchiverTests.cs b/OpenSim/Region/CoreModules/World/Archiver/Tests/ArchiverTests.cs
index b72cd02..04bdc4f 100644
--- a/OpenSim/Region/CoreModules/World/Archiver/Tests/ArchiverTests.cs
+++ b/OpenSim/Region/CoreModules/World/Archiver/Tests/ArchiverTests.cs
@@ -230,7 +230,7 @@ namespace OpenSim.Region.CoreModules.World.Archiver.Tests
230 // upset load 230 // upset load
231 tar.WriteDir(ArchiveConstants.TERRAINS_PATH); 231 tar.WriteDir(ArchiveConstants.TERRAINS_PATH);
232 232
233 tar.WriteFile(ArchiveConstants.CONTROL_FILE_PATH, ArchiveWriteRequestPreparation.Create0p2ControlFile()); 233 tar.WriteFile(ArchiveConstants.CONTROL_FILE_PATH, ArchiveWriteRequestPreparation.Create0p2ControlFile(new Dictionary<string, Object>()));
234 234
235 SceneObjectPart part1 = CreateSceneObjectPart1(); 235 SceneObjectPart part1 = CreateSceneObjectPart1();
236 SceneObjectGroup object1 = new SceneObjectGroup(part1); 236 SceneObjectGroup object1 = new SceneObjectGroup(part1);
@@ -329,7 +329,7 @@ namespace OpenSim.Region.CoreModules.World.Archiver.Tests
329 TarArchiveWriter tar = new TarArchiveWriter(archiveWriteStream); 329 TarArchiveWriter tar = new TarArchiveWriter(archiveWriteStream);
330 330
331 tar.WriteDir(ArchiveConstants.TERRAINS_PATH); 331 tar.WriteDir(ArchiveConstants.TERRAINS_PATH);
332 tar.WriteFile(ArchiveConstants.CONTROL_FILE_PATH, ArchiveWriteRequestPreparation.Create0p2ControlFile()); 332 tar.WriteFile(ArchiveConstants.CONTROL_FILE_PATH, ArchiveWriteRequestPreparation.Create0p2ControlFile(new Dictionary<string, Object>()));
333 333
334 RegionSettings rs = new RegionSettings(); 334 RegionSettings rs = new RegionSettings();
335 rs.AgentLimit = 17; 335 rs.AgentLimit = 17;