From 2c2f10e156c62aa1d95923ff5309f2be7f08faeb Mon Sep 17 00:00:00 2001 From: Justin Clarke Casey Date: Mon, 2 Feb 2009 20:59:12 +0000 Subject: * Establish OnOarFileSaved EventManager event and subscribe to that instead of passing in a waithandle to the archiver * This matches the existing OnOarFileLoaded event * This brings up the question of how these things can be made generic so that they don't have to be tied into EventManager, but that's a topic for another day --- .../World/Archiver/ArchiveWriteRequestExecution.cs | 31 +++++++++++----------- 1 file changed, 15 insertions(+), 16 deletions(-) (limited to 'OpenSim/Region/Environment/Modules/World/Archiver/ArchiveWriteRequestExecution.cs') diff --git a/OpenSim/Region/Environment/Modules/World/Archiver/ArchiveWriteRequestExecution.cs b/OpenSim/Region/Environment/Modules/World/Archiver/ArchiveWriteRequestExecution.cs index 8eec38d..179b82a 100644 --- a/OpenSim/Region/Environment/Modules/World/Archiver/ArchiveWriteRequestExecution.cs +++ b/OpenSim/Region/Environment/Modules/World/Archiver/ArchiveWriteRequestExecution.cs @@ -29,7 +29,6 @@ using System; using System.Collections.Generic; using System.IO; using System.Reflection; -using System.Threading; using System.Xml; using OpenMetaverse; using log4net; @@ -45,7 +44,7 @@ namespace OpenSim.Region.Environment.Modules.World.Archiver /// Method called when all the necessary assets for an archive request have been received. /// public delegate void AssetsRequestCallback(IDictionary assetsFound, ICollection assetsNotFoundUuids); - + /// /// Execute the write of an archive once we have received all the necessary data /// @@ -56,27 +55,25 @@ namespace OpenSim.Region.Environment.Modules.World.Archiver protected ITerrainModule m_terrainModule; protected IRegionSerialiserModule m_serialiser; protected List m_sceneObjects; - protected RegionInfo m_regionInfo; + protected Scene m_scene; protected Stream m_saveStream; - protected EventWaitHandle m_signalWhenDoneEvent; public ArchiveWriteRequestExecution( List sceneObjects, ITerrainModule terrainModule, IRegionSerialiserModule serialiser, - RegionInfo regionInfo, - Stream saveStream, - EventWaitHandle signalWhenDoneEvent) + Scene scene, + Stream saveStream) { m_sceneObjects = sceneObjects; m_terrainModule = terrainModule; m_serialiser = serialiser; - m_regionInfo = regionInfo; + m_scene = scene; m_saveStream = saveStream; - m_signalWhenDoneEvent = signalWhenDoneEvent; } - protected internal void ReceivedAllAssets(IDictionary assetsFound, ICollection assetsNotFoundUuids) + protected internal void ReceivedAllAssets( + IDictionary assetsFound, ICollection assetsNotFoundUuids) { foreach (UUID uuid in assetsNotFoundUuids) { @@ -95,11 +92,14 @@ namespace OpenSim.Region.Environment.Modules.World.Archiver archive.AddFile(ArchiveConstants.CONTROL_FILE_PATH, Create0p2ControlFile()); // Write out region settings - string settingsPath = String.Format("{0}{1}.xml", ArchiveConstants.SETTINGS_PATH, m_regionInfo.RegionName); - archive.AddFile(settingsPath, RegionSettingsSerializer.Serialize(m_regionInfo.RegionSettings)); + string settingsPath + = String.Format("{0}{1}.xml", ArchiveConstants.SETTINGS_PATH, m_scene.RegionInfo.RegionName); + archive.AddFile(settingsPath, RegionSettingsSerializer.Serialize(m_scene.RegionInfo.RegionSettings)); // Write out terrain - string terrainPath = String.Format("{0}{1}.r32", ArchiveConstants.TERRAINS_PATH, m_regionInfo.RegionName); + string terrainPath + = String.Format("{0}{1}.r32", ArchiveConstants.TERRAINS_PATH, m_scene.RegionInfo.RegionName); + MemoryStream ms = new MemoryStream(); m_terrainModule.SaveToStream(terrainPath, ms); archive.AddFile(terrainPath, ms.ToArray()); @@ -129,10 +129,9 @@ namespace OpenSim.Region.Environment.Modules.World.Archiver archive.WriteTar(m_saveStream); - m_log.InfoFormat("[ARCHIVER]: Wrote out OpenSimulator archive for {0}", m_regionInfo.RegionName); + m_log.InfoFormat("[ARCHIVER]: Wrote out OpenSimulator archive for {0}", m_scene.RegionInfo.RegionName); - if (m_signalWhenDoneEvent != null) - m_signalWhenDoneEvent.Set(); + m_scene.EventManager.TriggerOarFileSaved(String.Empty); } /// -- cgit v1.1