From 62771560448edbc2112d427acd4b37780dfe2154 Mon Sep 17 00:00:00 2001 From: Justin Clarke Casey Date: Thu, 14 May 2009 20:37:54 +0000 Subject: * When saving an oar, save assets when immediately received rather than storing them all up in memory * Hopefully this will remove out of memory problems when saving large oars on machines without much memory * It may also speed up saving of large oars --- .../World/Archiver/ArchiveWriteRequestPreparation.cs | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) (limited to 'OpenSim/Region/CoreModules/World/Archiver/ArchiveWriteRequestPreparation.cs') diff --git a/OpenSim/Region/CoreModules/World/Archiver/ArchiveWriteRequestPreparation.cs b/OpenSim/Region/CoreModules/World/Archiver/ArchiveWriteRequestPreparation.cs index a6ad24c..0a882eb 100644 --- a/OpenSim/Region/CoreModules/World/Archiver/ArchiveWriteRequestPreparation.cs +++ b/OpenSim/Region/CoreModules/World/Archiver/ArchiveWriteRequestPreparation.cs @@ -35,6 +35,7 @@ using System.Threading; using log4net; using OpenMetaverse; using OpenSim.Framework; +using OpenSim.Framework.Serialization; using OpenSim.Region.CoreModules.World.Terrain; using OpenSim.Region.Framework.Interfaces; using OpenSim.Region.Framework.Scenes; @@ -126,6 +127,8 @@ namespace OpenSim.Region.CoreModules.World.Archiver if (regionSettings.TerrainTexture4 != RegionSettings.DEFAULT_TERRAIN_TEXTURE_4) assetUuids[regionSettings.TerrainTexture4] = 1; + TarArchiveWriter archiveWriter = new TarArchiveWriter(m_saveStream); + // Asynchronously request all the assets required to perform this archive operation ArchiveWriteRequestExecution awre = new ArchiveWriteRequestExecution( @@ -133,10 +136,12 @@ namespace OpenSim.Region.CoreModules.World.Archiver m_scene.RequestModuleInterface(), m_scene.RequestModuleInterface(), m_scene, - m_saveStream, - m_requestId); + archiveWriter, + m_requestId); - new AssetsRequest(assetUuids.Keys, m_scene.CommsManager.AssetCache, awre.ReceivedAllAssets).Execute(); + new AssetsRequest( + new AssetsArchiver(archiveWriter), assetUuids.Keys, + m_scene.CommsManager.AssetCache, awre.ReceivedAllAssets).Execute(); } } } -- cgit v1.1