From f741a62d540f0c04eedebd9c7eb072fc50c4a111 Mon Sep 17 00:00:00 2001 From: Adam Frisby Date: Mon, 21 Apr 2008 09:12:47 +0000 Subject: * Formatted ExportSerialiserModule and SvnBackupModule * Added a form of GZip compression support to object.xml files produced by exportserialiser. Will look towards standard GZip support. File compression seems to be highly worthwhile reducing a 1.5mb sim state to 62kb. --- .../ExportSerialiser/ExportSerialisationModule.cs | 97 +++++++++++----------- .../Modules/ExportSerialiser/IFileSerialiser.cs | 4 +- .../Modules/ExportSerialiser/IRegionSerialiser.cs | 2 +- .../Modules/ExportSerialiser/SerialiseObjects.cs | 41 +++++---- .../Modules/ExportSerialiser/SerialiseTerrain.cs | 4 +- 5 files changed, 79 insertions(+), 69 deletions(-) (limited to 'OpenSim/Region/Environment/Modules/ExportSerialiser') diff --git a/OpenSim/Region/Environment/Modules/ExportSerialiser/ExportSerialisationModule.cs b/OpenSim/Region/Environment/Modules/ExportSerialiser/ExportSerialisationModule.cs index f811f22..91770af 100644 --- a/OpenSim/Region/Environment/Modules/ExportSerialiser/ExportSerialisationModule.cs +++ b/OpenSim/Region/Environment/Modules/ExportSerialiser/ExportSerialisationModule.cs @@ -37,10 +37,54 @@ namespace OpenSim.Region.Environment.Modules.ExportSerialiser { public class ExportSerialisationModule : IRegionModule, IRegionSerialiser { - private List m_regions = new List(); - private List m_serialisers = new List(); private Commander m_commander = new Commander("Export"); + private List m_regions = new List(); private string m_savedir = "exports" + "/"; + private List m_serialisers = new List(); + + #region IRegionModule Members + + public void Initialise(Scene scene, IConfigSource source) + { + scene.RegisterModuleCommander("Export", m_commander); + scene.EventManager.OnPluginConsole += EventManager_OnPluginConsole; + scene.RegisterModuleInterface(this); + + lock (m_regions) + { + m_regions.Add(scene); + } + } + + public void PostInitialise() + { + lock (m_serialisers) + { + m_serialisers.Add(new SerialiseTerrain()); + m_serialisers.Add(new SerialiseObjects()); + } + + LoadCommanderCommands(); + } + + public void Close() + { + m_regions.Clear(); + } + + public string Name + { + get { return "ExportSerialisationModule"; } + } + + public bool IsSharedModule + { + get { return true; } + } + + #endregion + + #region IRegionSerialiser Members public List SerialiseRegion(Scene scene, string saveDir) { @@ -76,22 +120,9 @@ namespace OpenSim.Region.Environment.Modules.ExportSerialiser return results; } + #endregion - #region IRegionModule Members - - public void Initialise(Scene scene, IConfigSource source) - { - scene.RegisterModuleCommander("Export", m_commander); - scene.EventManager.OnPluginConsole += EventManager_OnPluginConsole; - scene.RegisterModuleInterface(this); - - lock (m_regions) - { - m_regions.Add(scene); - } - } - - void EventManager_OnPluginConsole(string[] args) + private void EventManager_OnPluginConsole(string[] args) { if (args[0] == "export") { @@ -108,7 +139,7 @@ namespace OpenSim.Region.Environment.Modules.ExportSerialiser { foreach (Scene region in m_regions) { - if (region.RegionInfo.RegionName == (string)args[0]) + if (region.RegionInfo.RegionName == (string) args[0]) { List results = SerialiseRegion(region, m_savedir + region.RegionInfo.RegionID.ToString() + "/"); } @@ -133,33 +164,5 @@ namespace OpenSim.Region.Environment.Modules.ExportSerialiser m_commander.RegisterCommand("save", serialiseSceneCommand); m_commander.RegisterCommand("save-all", serialiseAllScenesCommand); } - - public void PostInitialise() - { - lock (m_serialisers) - { - m_serialisers.Add(new SerialiseTerrain()); - m_serialisers.Add(new SerialiseObjects()); - } - - LoadCommanderCommands(); - } - - public void Close() - { - m_regions.Clear(); - } - - public string Name - { - get { return "ExportSerialisationModule"; } - } - - public bool IsSharedModule - { - get { return true; } - } - - #endregion } -} +} \ No newline at end of file diff --git a/OpenSim/Region/Environment/Modules/ExportSerialiser/IFileSerialiser.cs b/OpenSim/Region/Environment/Modules/ExportSerialiser/IFileSerialiser.cs index 8cd97a8..77a418f 100644 --- a/OpenSim/Region/Environment/Modules/ExportSerialiser/IFileSerialiser.cs +++ b/OpenSim/Region/Environment/Modules/ExportSerialiser/IFileSerialiser.cs @@ -29,8 +29,8 @@ using OpenSim.Region.Environment.Scenes; namespace OpenSim.Region.Environment.Modules.ExportSerialiser { - interface IFileSerialiser + internal interface IFileSerialiser { string WriteToFile(Scene scene, string dir); } -} +} \ No newline at end of file diff --git a/OpenSim/Region/Environment/Modules/ExportSerialiser/IRegionSerialiser.cs b/OpenSim/Region/Environment/Modules/ExportSerialiser/IRegionSerialiser.cs index 5b10957..e1721ff 100644 --- a/OpenSim/Region/Environment/Modules/ExportSerialiser/IRegionSerialiser.cs +++ b/OpenSim/Region/Environment/Modules/ExportSerialiser/IRegionSerialiser.cs @@ -34,4 +34,4 @@ namespace OpenSim.Region.Environment.Modules.ExportSerialiser { List SerialiseRegion(Scene scene, string saveDir); } -} +} \ No newline at end of file diff --git a/OpenSim/Region/Environment/Modules/ExportSerialiser/SerialiseObjects.cs b/OpenSim/Region/Environment/Modules/ExportSerialiser/SerialiseObjects.cs index ac80f40..7e5cf47 100644 --- a/OpenSim/Region/Environment/Modules/ExportSerialiser/SerialiseObjects.cs +++ b/OpenSim/Region/Environment/Modules/ExportSerialiser/SerialiseObjects.cs @@ -27,20 +27,30 @@ using System.Collections.Generic; using System.IO; +using System.IO.Compression; using System.Text; using System.Xml; using OpenSim.Region.Environment.Scenes; namespace OpenSim.Region.Environment.Modules.ExportSerialiser { - class SerialiseObjects : IFileSerialiser + internal class SerialiseObjects : IFileSerialiser { #region IFileSerialiser Members + public string WriteToFile(Scene scene, string dir) + { + string targetFileName = dir + "objects.xml"; + + SaveSerialisedToFile(targetFileName, scene); + + return "objects.xml"; + } + + #endregion public void SaveSerialisedToFile(string fileName, Scene scene) { - int primCount = 0; string xmlstream = ""; List EntityList = scene.GetEntities(); @@ -50,8 +60,7 @@ namespace OpenSim.Region.Environment.Modules.ExportSerialiser { if (ent is SceneObjectGroup) { - EntityXml.Add(((SceneObjectGroup)ent).ToXmlString2()); - primCount++; + EntityXml.Add(((SceneObjectGroup) ent).ToXmlString2()); } } EntityXml.Sort(); @@ -69,26 +78,24 @@ namespace OpenSim.Region.Environment.Modules.ExportSerialiser formatter.Formatting = Formatting.Indented; doc.WriteContentTo(formatter); formatter.Flush(); - StreamReader reader = new StreamReader(stream); stream.Seek(0, SeekOrigin.Begin); FileStream objectsFile = new FileStream(fileName, FileMode.Create); + stream.WriteTo(objectsFile); objectsFile.Flush(); objectsFile.Close(); + #region GZip Compressed Version + FileStream objectsFileCompressed = new FileStream(fileName + ".gzs", FileMode.Create); + MemoryStream gzipMSStream = new MemoryStream(); + GZipStream gzipStream = new GZipStream(gzipMSStream, CompressionMode.Compress); + stream.WriteTo(gzipStream); + gzipMSStream.WriteTo(objectsFileCompressed); + objectsFileCompressed.Flush(); + objectsFileCompressed.Close(); + #endregion } - - public string WriteToFile(Scene scene, string dir) - { - string targetFileName = dir + "objects.xml"; - - SaveSerialisedToFile(targetFileName, scene); - - return "objects.xml"; - } - - #endregion } -} +} \ No newline at end of file diff --git a/OpenSim/Region/Environment/Modules/ExportSerialiser/SerialiseTerrain.cs b/OpenSim/Region/Environment/Modules/ExportSerialiser/SerialiseTerrain.cs index 8555089..c4790c2 100644 --- a/OpenSim/Region/Environment/Modules/ExportSerialiser/SerialiseTerrain.cs +++ b/OpenSim/Region/Environment/Modules/ExportSerialiser/SerialiseTerrain.cs @@ -31,7 +31,7 @@ using OpenSim.Region.Environment.Scenes; namespace OpenSim.Region.Environment.Modules.ExportSerialiser { - class SerialiseTerrain : IFileSerialiser + internal class SerialiseTerrain : IFileSerialiser { #region IFileSerialiser Members @@ -50,4 +50,4 @@ namespace OpenSim.Region.Environment.Modules.ExportSerialiser #endregion } -} +} \ No newline at end of file -- cgit v1.1