From 7ca61e01742b53033009f10c45e3ea0d0ef91315 Mon Sep 17 00:00:00 2001 From: Justin Clark-Casey (justincc) Date: Fri, 4 Sep 2009 21:10:56 +0100 Subject: Add ids to iar requests Stop save iar test wrongly relying on thread pulsing (still disabled though) --- .../Inventory/Archiver/InventoryArchiverModule.cs | 41 ++++++++++++++++------ 1 file changed, 30 insertions(+), 11 deletions(-) (limited to 'OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/InventoryArchiverModule.cs') diff --git a/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/InventoryArchiverModule.cs b/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/InventoryArchiverModule.cs index c495e02..55d7997 100644 --- a/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/InventoryArchiverModule.cs +++ b/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/InventoryArchiverModule.cs @@ -57,7 +57,12 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver /// /// The file to load and save inventory if no filename has been specified /// - protected const string DEFAULT_INV_BACKUP_FILENAME = "user-inventory_iar.tar.gz"; + protected const string DEFAULT_INV_BACKUP_FILENAME = "user-inventory_iar.tar.gz"; + + /// + /// Pending save completions initiated from the console + /// + protected List m_pendingConsoleSaves = new List(); /// /// All scenes that this module knows about @@ -106,32 +111,33 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver /// Trigger the inventory archive saved event. /// protected internal void TriggerInventoryArchiveSaved( - bool succeeded, CachedUserInfo userInfo, string invPath, Stream saveStream, Exception reportedException) + Guid id, bool succeeded, CachedUserInfo userInfo, string invPath, Stream saveStream, + Exception reportedException) { InventoryArchiveSaved handlerInventoryArchiveSaved = OnInventoryArchiveSaved; if (handlerInventoryArchiveSaved != null) - handlerInventoryArchiveSaved(succeeded, userInfo, invPath, saveStream, reportedException); + handlerInventoryArchiveSaved(id, succeeded, userInfo, invPath, saveStream, reportedException); } - public void ArchiveInventory(string firstName, string lastName, string invPath, Stream saveStream) + public void ArchiveInventory(Guid id, string firstName, string lastName, string invPath, Stream saveStream) { if (m_scenes.Count > 0) { CachedUserInfo userInfo = GetUserInfo(firstName, lastName); if (userInfo != null) - new InventoryArchiveWriteRequest(this, userInfo, invPath, saveStream).Execute(); + new InventoryArchiveWriteRequest(id, this, userInfo, invPath, saveStream).Execute(); } } - public void ArchiveInventory(string firstName, string lastName, string invPath, string savePath) + public void ArchiveInventory(Guid id, string firstName, string lastName, string invPath, string savePath) { if (m_scenes.Count > 0) { CachedUserInfo userInfo = GetUserInfo(firstName, lastName); if (userInfo != null) - new InventoryArchiveWriteRequest(this, userInfo, invPath, savePath).Execute(); + new InventoryArchiveWriteRequest(id, this, userInfo, invPath, savePath).Execute(); } } @@ -215,13 +221,26 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver m_log.InfoFormat( "[INVENTORY ARCHIVER]: Saving archive {0} from inventory path {1} for {2} {3}", savePath, invPath, firstName, lastName); - - ArchiveInventory(firstName, lastName, invPath, savePath); - } + + Guid id = Guid.NewGuid(); + ArchiveInventory(id, firstName, lastName, invPath, savePath); + + lock (m_pendingConsoleSaves) + m_pendingConsoleSaves.Add(id); + } private void SaveInvConsoleCommandCompleted( - bool succeeded, CachedUserInfo userInfo, string invPath, Stream saveStream, Exception reportedException) + Guid id, bool succeeded, CachedUserInfo userInfo, string invPath, Stream saveStream, + Exception reportedException) { + lock (m_pendingConsoleSaves) + { + if (m_pendingConsoleSaves.Contains(id)) + m_pendingConsoleSaves.Remove(id); + else + return; + } + if (succeeded) { m_log.InfoFormat("[INVENTORY ARCHIVER]: Saved archive for {0}", userInfo.UserProfile.Name); -- cgit v1.1