diff options
author | Justin Clark-Casey (justincc) | 2010-07-14 20:43:35 +0100 |
---|---|---|
committer | Justin Clark-Casey (justincc) | 2010-07-14 20:43:35 +0100 |
commit | 8c10cb5ffe783d457184923d32e8baea5321ed1d (patch) | |
tree | dcebba549aeb5744e872c587814b48f309f6ccd4 /OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/InventoryArchiverModule.cs | |
parent | Merge branch 'master' of ssh://opensimulator.org/var/git/opensim (diff) | |
download | opensim-SC_OLD-8c10cb5ffe783d457184923d32e8baea5321ed1d.zip opensim-SC_OLD-8c10cb5ffe783d457184923d32e8baea5321ed1d.tar.gz opensim-SC_OLD-8c10cb5ffe783d457184923d32e8baea5321ed1d.tar.bz2 opensim-SC_OLD-8c10cb5ffe783d457184923d32e8baea5321ed1d.tar.xz |
improve closing of load/save iar streams in the event of a problem
Diffstat (limited to '')
-rw-r--r-- | OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/InventoryArchiverModule.cs | 111 |
1 files changed, 63 insertions, 48 deletions
diff --git a/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/InventoryArchiverModule.cs b/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/InventoryArchiverModule.cs index cfefbe9..f7a2b09 100644 --- a/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/InventoryArchiverModule.cs +++ b/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/InventoryArchiverModule.cs | |||
@@ -322,34 +322,41 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver | |||
322 | /// <param name="cmdparams"></param> | 322 | /// <param name="cmdparams"></param> |
323 | protected void HandleLoadInvConsoleCommand(string module, string[] cmdparams) | 323 | protected void HandleLoadInvConsoleCommand(string module, string[] cmdparams) |
324 | { | 324 | { |
325 | m_log.Info("[INVENTORY ARCHIVER]: PLEASE NOTE THAT THIS FACILITY IS EXPERIMENTAL. BUG REPORTS WELCOME."); | 325 | try |
326 | 326 | { | |
327 | Dictionary<string, object> options = new Dictionary<string, object>(); | 327 | m_log.Info("[INVENTORY ARCHIVER]: PLEASE NOTE THAT THIS FACILITY IS EXPERIMENTAL. BUG REPORTS WELCOME."); |
328 | OptionSet optionSet = new OptionSet().Add("m|merge", delegate (string v) { options["merge"] = v != null; }); | 328 | |
329 | 329 | Dictionary<string, object> options = new Dictionary<string, object>(); | |
330 | List<string> mainParams = optionSet.Parse(cmdparams); | 330 | OptionSet optionSet = new OptionSet().Add("m|merge", delegate (string v) { options["merge"] = v != null; }); |
331 | 331 | ||
332 | if (mainParams.Count < 6) | 332 | List<string> mainParams = optionSet.Parse(cmdparams); |
333 | { | 333 | |
334 | m_log.Error( | 334 | if (mainParams.Count < 6) |
335 | "[INVENTORY ARCHIVER]: usage is load iar <first name> <last name> <inventory path> <user password> [<load file path>]"); | 335 | { |
336 | return; | 336 | m_log.Error( |
337 | } | 337 | "[INVENTORY ARCHIVER]: usage is load iar <first name> <last name> <inventory path> <user password> [<load file path>]"); |
338 | 338 | return; | |
339 | string firstName = mainParams[2]; | 339 | } |
340 | string lastName = mainParams[3]; | 340 | |
341 | string invPath = mainParams[4]; | 341 | string firstName = mainParams[2]; |
342 | string pass = mainParams[5]; | 342 | string lastName = mainParams[3]; |
343 | string loadPath = (mainParams.Count > 6 ? mainParams[6] : DEFAULT_INV_BACKUP_FILENAME); | 343 | string invPath = mainParams[4]; |
344 | 344 | string pass = mainParams[5]; | |
345 | m_log.InfoFormat( | 345 | string loadPath = (mainParams.Count > 6 ? mainParams[6] : DEFAULT_INV_BACKUP_FILENAME); |
346 | "[INVENTORY ARCHIVER]: Loading archive {0} to inventory path {1} for {2} {3}", | 346 | |
347 | loadPath, invPath, firstName, lastName); | ||
348 | |||
349 | if (DearchiveInventory(firstName, lastName, invPath, pass, loadPath, options)) | ||
350 | m_log.InfoFormat( | 347 | m_log.InfoFormat( |
351 | "[INVENTORY ARCHIVER]: Loaded archive {0} for {1} {2}", | 348 | "[INVENTORY ARCHIVER]: Loading archive {0} to inventory path {1} for {2} {3}", |
352 | loadPath, firstName, lastName); | 349 | loadPath, invPath, firstName, lastName); |
350 | |||
351 | if (DearchiveInventory(firstName, lastName, invPath, pass, loadPath, options)) | ||
352 | m_log.InfoFormat( | ||
353 | "[INVENTORY ARCHIVER]: Loaded archive {0} for {1} {2}", | ||
354 | loadPath, firstName, lastName); | ||
355 | } | ||
356 | catch (InventoryArchiverException e) | ||
357 | { | ||
358 | m_log.ErrorFormat("[INVENTORY ARCHIVER]: {0}", e.Message); | ||
359 | } | ||
353 | } | 360 | } |
354 | 361 | ||
355 | /// <summary> | 362 | /// <summary> |
@@ -358,30 +365,38 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver | |||
358 | /// <param name="cmdparams"></param> | 365 | /// <param name="cmdparams"></param> |
359 | protected void HandleSaveInvConsoleCommand(string module, string[] cmdparams) | 366 | protected void HandleSaveInvConsoleCommand(string module, string[] cmdparams) |
360 | { | 367 | { |
361 | if (cmdparams.Length < 6) | 368 | Guid id = Guid.NewGuid(); |
369 | |||
370 | try | ||
362 | { | 371 | { |
363 | m_log.Error( | 372 | if (cmdparams.Length < 6) |
364 | "[INVENTORY ARCHIVER]: usage is save iar <first name> <last name> <inventory path> <user password> [<save file path>]"); | 373 | { |
365 | return; | 374 | m_log.Error( |
375 | "[INVENTORY ARCHIVER]: usage is save iar <first name> <last name> <inventory path> <user password> [<save file path>]"); | ||
376 | return; | ||
377 | } | ||
378 | |||
379 | m_log.Info("[INVENTORY ARCHIVER]: PLEASE NOTE THAT THIS FACILITY IS EXPERIMENTAL. BUG REPORTS WELCOME."); | ||
380 | |||
381 | string firstName = cmdparams[2]; | ||
382 | string lastName = cmdparams[3]; | ||
383 | string invPath = cmdparams[4]; | ||
384 | string pass = cmdparams[5]; | ||
385 | string savePath = (cmdparams.Length > 6 ? cmdparams[6] : DEFAULT_INV_BACKUP_FILENAME); | ||
386 | |||
387 | m_log.InfoFormat( | ||
388 | "[INVENTORY ARCHIVER]: Saving archive {0} using inventory path {1} for {2} {3}", | ||
389 | savePath, invPath, firstName, lastName); | ||
390 | |||
391 | ArchiveInventory(id, firstName, lastName, invPath, pass, savePath, new Dictionary<string, object>()); | ||
366 | } | 392 | } |
367 | 393 | catch (InventoryArchiverException e) | |
368 | m_log.Info("[INVENTORY ARCHIVER]: PLEASE NOTE THAT THIS FACILITY IS EXPERIMENTAL. BUG REPORTS WELCOME."); | 394 | { |
369 | 395 | m_log.ErrorFormat("[INVENTORY ARCHIVER]: {0}", e.Message); | |
370 | string firstName = cmdparams[2]; | 396 | } |
371 | string lastName = cmdparams[3]; | 397 | |
372 | string invPath = cmdparams[4]; | ||
373 | string pass = cmdparams[5]; | ||
374 | string savePath = (cmdparams.Length > 6 ? cmdparams[6] : DEFAULT_INV_BACKUP_FILENAME); | ||
375 | |||
376 | m_log.InfoFormat( | ||
377 | "[INVENTORY ARCHIVER]: Saving archive {0} using inventory path {1} for {2} {3}", | ||
378 | savePath, invPath, firstName, lastName); | ||
379 | |||
380 | Guid id = Guid.NewGuid(); | ||
381 | ArchiveInventory(id, firstName, lastName, invPath, pass, savePath, new Dictionary<string, object>()); | ||
382 | |||
383 | lock (m_pendingConsoleSaves) | 398 | lock (m_pendingConsoleSaves) |
384 | m_pendingConsoleSaves.Add(id); | 399 | m_pendingConsoleSaves.Add(id); |
385 | } | 400 | } |
386 | 401 | ||
387 | private void SaveInvConsoleCommandCompleted( | 402 | private void SaveInvConsoleCommandCompleted( |