From 1499607215aab4994f933a8ed2a54ed037a1f9ba Mon Sep 17 00:00:00 2001 From: Diva Canto Date: Fri, 15 Oct 2010 17:27:19 -0700 Subject: Made OARs use the new serialization procedure. (TPs/crossings still on the old one) Added an options argument down the pipeline. For the time being it takes --old-guids as an option to produce instead of . --- .../World/Archiver/ArchiveWriteRequestExecution.cs | 7 ++++-- .../Archiver/ArchiveWriteRequestPreparation.cs | 5 ++-- .../CoreModules/World/Archiver/ArchiverModule.cs | 27 ++++++++++++++-------- .../World/Serialiser/SerialiserModule.cs | 4 ++-- .../World/Serialiser/Tests/SerialiserTests.cs | 2 +- 5 files changed, 28 insertions(+), 17 deletions(-) (limited to 'OpenSim/Region/CoreModules/World') diff --git a/OpenSim/Region/CoreModules/World/Archiver/ArchiveWriteRequestExecution.cs b/OpenSim/Region/CoreModules/World/Archiver/ArchiveWriteRequestExecution.cs index 586d98e..eb9688d 100644 --- a/OpenSim/Region/CoreModules/World/Archiver/ArchiveWriteRequestExecution.cs +++ b/OpenSim/Region/CoreModules/World/Archiver/ArchiveWriteRequestExecution.cs @@ -60,6 +60,7 @@ namespace OpenSim.Region.CoreModules.World.Archiver protected Scene m_scene; protected TarArchiveWriter m_archiveWriter; protected Guid m_requestId; + protected Dictionary m_options; public ArchiveWriteRequestExecution( List sceneObjects, @@ -67,7 +68,8 @@ namespace OpenSim.Region.CoreModules.World.Archiver IRegionSerialiserModule serialiser, Scene scene, TarArchiveWriter archiveWriter, - Guid requestId) + Guid requestId, + Dictionary options) { m_sceneObjects = sceneObjects; m_terrainModule = terrainModule; @@ -75,6 +77,7 @@ namespace OpenSim.Region.CoreModules.World.Archiver m_scene = scene; m_archiveWriter = archiveWriter; m_requestId = requestId; + m_options = options; } protected internal void ReceivedAllAssets( @@ -145,7 +148,7 @@ namespace OpenSim.Region.CoreModules.World.Archiver { //m_log.DebugFormat("[ARCHIVER]: Saving {0} {1}, {2}", entity.Name, entity.UUID, entity.GetType()); - string serializedObject = m_serialiser.SerializeGroupToXml2(sceneObject); + string serializedObject = m_serialiser.SerializeGroupToXml2(sceneObject, m_options); m_archiveWriter.WriteFile(ArchiveHelpers.CreateObjectPath(sceneObject), serializedObject); } diff --git a/OpenSim/Region/CoreModules/World/Archiver/ArchiveWriteRequestPreparation.cs b/OpenSim/Region/CoreModules/World/Archiver/ArchiveWriteRequestPreparation.cs index 283b33b..e9a476c 100644 --- a/OpenSim/Region/CoreModules/World/Archiver/ArchiveWriteRequestPreparation.cs +++ b/OpenSim/Region/CoreModules/World/Archiver/ArchiveWriteRequestPreparation.cs @@ -98,7 +98,7 @@ namespace OpenSim.Region.CoreModules.World.Archiver /// Archive the region requested. /// /// if there was an io problem with creating the file - public void ArchiveRegion() + public void ArchiveRegion(Dictionary options) { Dictionary assetUuids = new Dictionary(); @@ -165,7 +165,8 @@ namespace OpenSim.Region.CoreModules.World.Archiver m_scene.RequestModuleInterface(), m_scene, archiveWriter, - m_requestId); + m_requestId, + options); new AssetsRequest( new AssetsArchiver(archiveWriter), assetUuids, diff --git a/OpenSim/Region/CoreModules/World/Archiver/ArchiverModule.cs b/OpenSim/Region/CoreModules/World/Archiver/ArchiverModule.cs index 82ede01..98bdcd0 100644 --- a/OpenSim/Region/CoreModules/World/Archiver/ArchiverModule.cs +++ b/OpenSim/Region/CoreModules/World/Archiver/ArchiverModule.cs @@ -122,37 +122,44 @@ namespace OpenSim.Region.CoreModules.World.Archiver /// public void HandleSaveOarConsoleCommand(string module, string[] cmdparams) { + Dictionary options = new Dictionary(); + + OptionSet ops = new OptionSet(); + ops.Add("old|old-guids", delegate(string v) { options["old-guids"] = (v != null); }); + + List mainParams = ops.Parse(cmdparams); + if (cmdparams.Length > 2) { - ArchiveRegion(cmdparams[2]); + ArchiveRegion(mainParams[2], options); } else { - ArchiveRegion(DEFAULT_OAR_BACKUP_FILENAME); + ArchiveRegion(DEFAULT_OAR_BACKUP_FILENAME, options); } } - public void ArchiveRegion(string savePath) + public void ArchiveRegion(string savePath, Dictionary options) { - ArchiveRegion(savePath, Guid.Empty); + ArchiveRegion(savePath, Guid.Empty, options); } - - public void ArchiveRegion(string savePath, Guid requestId) + + public void ArchiveRegion(string savePath, Guid requestId, Dictionary options) { m_log.InfoFormat( "[ARCHIVER]: Writing archive for region {0} to {1}", m_scene.RegionInfo.RegionName, savePath); - new ArchiveWriteRequestPreparation(m_scene, savePath, requestId).ArchiveRegion(); + new ArchiveWriteRequestPreparation(m_scene, savePath, requestId).ArchiveRegion(options); } - + public void ArchiveRegion(Stream saveStream) { ArchiveRegion(saveStream, Guid.Empty); } - + public void ArchiveRegion(Stream saveStream, Guid requestId) { - new ArchiveWriteRequestPreparation(m_scene, saveStream, requestId).ArchiveRegion(); + new ArchiveWriteRequestPreparation(m_scene, saveStream, requestId).ArchiveRegion(new Dictionary()); } public void DearchiveRegion(string loadPath) diff --git a/OpenSim/Region/CoreModules/World/Serialiser/SerialiserModule.cs b/OpenSim/Region/CoreModules/World/Serialiser/SerialiserModule.cs index 04062b0..ec97acd 100644 --- a/OpenSim/Region/CoreModules/World/Serialiser/SerialiserModule.cs +++ b/OpenSim/Region/CoreModules/World/Serialiser/SerialiserModule.cs @@ -160,9 +160,9 @@ namespace OpenSim.Region.CoreModules.World.Serialiser return SceneXmlLoader.DeserializeGroupFromXml2(xmlString); } - public string SerializeGroupToXml2(SceneObjectGroup grp) + public string SerializeGroupToXml2(SceneObjectGroup grp, Dictionary options) { - return SceneXmlLoader.SaveGroupToXml2(grp); + return SceneXmlLoader.SaveGroupToXml2(grp, options); } public void SavePrimListToXml2(EntityBase[] entityList, string fileName) diff --git a/OpenSim/Region/CoreModules/World/Serialiser/Tests/SerialiserTests.cs b/OpenSim/Region/CoreModules/World/Serialiser/Tests/SerialiserTests.cs index 799a448..49bd466 100644 --- a/OpenSim/Region/CoreModules/World/Serialiser/Tests/SerialiserTests.cs +++ b/OpenSim/Region/CoreModules/World/Serialiser/Tests/SerialiserTests.cs @@ -369,7 +369,7 @@ namespace OpenSim.Region.CoreModules.World.Serialiser.Tests // Need to add the object to the scene so that the request to get script state succeeds m_scene.AddSceneObject(so); - string xml2 = m_serialiserModule.SerializeGroupToXml2(so); + string xml2 = m_serialiserModule.SerializeGroupToXml2(so, new System.Collections.Generic.Dictionary()); XmlTextReader xtr = new XmlTextReader(new StringReader(xml2)); xtr.ReadStartElement("SceneObjectGroup"); -- cgit v1.1