aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/InventoryArchiveWriteRequest.cs
diff options
context:
space:
mode:
authorJustin Clarke Casey2009-02-17 15:39:18 +0000
committerJustin Clarke Casey2009-02-17 15:39:18 +0000
commit229b69e044ca81233f248ff623b22516136bb3c6 (patch)
tree6c8d1d8f145b5bb2ec7745fe1209b1d3221496c3 /OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/InventoryArchiveWriteRequest.cs
parent* Ignored a bunch of genned files (diff)
downloadopensim-SC_OLD-229b69e044ca81233f248ff623b22516136bb3c6.zip
opensim-SC_OLD-229b69e044ca81233f248ff623b22516136bb3c6.tar.gz
opensim-SC_OLD-229b69e044ca81233f248ff623b22516136bb3c6.tar.bz2
opensim-SC_OLD-229b69e044ca81233f248ff623b22516136bb3c6.tar.xz
* Establish InventoryArchiveSaved event for unit tests
* This is done on the inventory archiver module directly rather than Scene.EventManager - the module seems the more appropriate location
Diffstat (limited to 'OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/InventoryArchiveWriteRequest.cs')
-rw-r--r--OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/InventoryArchiveWriteRequest.cs42
1 files changed, 27 insertions, 15 deletions
diff --git a/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/InventoryArchiveWriteRequest.cs b/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/InventoryArchiveWriteRequest.cs
index d916eba..456831d 100644
--- a/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/InventoryArchiveWriteRequest.cs
+++ b/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/InventoryArchiveWriteRequest.cs
@@ -45,9 +45,9 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver
45 private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); 45 private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
46 46
47 protected TarArchiveWriter archive = new TarArchiveWriter(); 47 protected TarArchiveWriter archive = new TarArchiveWriter();
48 protected CommunicationsManager commsManager;
49 protected Dictionary<UUID, int> assetUuids = new Dictionary<UUID, int>(); 48 protected Dictionary<UUID, int> assetUuids = new Dictionary<UUID, int>();
50 49
50 private InventoryArchiverModule m_module;
51 private CachedUserInfo m_userInfo; 51 private CachedUserInfo m_userInfo;
52 private string m_invPath; 52 private string m_invPath;
53 53
@@ -60,12 +60,12 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver
60 /// Constructor 60 /// Constructor
61 /// </summary> 61 /// </summary>
62 public InventoryArchiveWriteRequest( 62 public InventoryArchiveWriteRequest(
63 CachedUserInfo userInfo, string invPath, string savePath, CommunicationsManager commsManager) 63 InventoryArchiverModule module, CachedUserInfo userInfo, string invPath, string savePath)
64 : this( 64 : this(
65 module,
65 userInfo, 66 userInfo,
66 invPath, 67 invPath,
67 new GZipStream(new FileStream(savePath, FileMode.Create), CompressionMode.Compress), 68 new GZipStream(new FileStream(savePath, FileMode.Create), CompressionMode.Compress))
68 commsManager)
69 { 69 {
70 } 70 }
71 71
@@ -73,19 +73,33 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver
73 /// Constructor 73 /// Constructor
74 /// </summary> 74 /// </summary>
75 public InventoryArchiveWriteRequest( 75 public InventoryArchiveWriteRequest(
76 CachedUserInfo userInfo, string invPath, Stream saveStream, CommunicationsManager commsManager) 76 InventoryArchiverModule module, CachedUserInfo userInfo, string invPath, Stream saveStream)
77 { 77 {
78 m_module = module;
78 m_userInfo = userInfo; 79 m_userInfo = userInfo;
79 m_invPath = invPath; 80 m_invPath = invPath;
80 m_saveStream = saveStream; 81 m_saveStream = saveStream;
81 this.commsManager = commsManager;
82 } 82 }
83 83
84 protected void ReceivedAllAssets(IDictionary<UUID, AssetBase> assetsFound, ICollection<UUID> assetsNotFoundUuids) 84 protected void ReceivedAllAssets(IDictionary<UUID, AssetBase> assetsFound, ICollection<UUID> assetsNotFoundUuids)
85 { 85 {
86 AssetsArchiver assetsArchiver = new AssetsArchiver(assetsFound); 86 AssetsArchiver assetsArchiver = new AssetsArchiver(assetsFound);
87 assetsArchiver.Archive(archive); 87 assetsArchiver.Archive(archive);
88 archive.WriteTar(m_saveStream); 88
89 Exception reportedException = null;
90 bool succeeded = true;
91
92 try
93 {
94 archive.WriteTar(m_saveStream);
95 }
96 catch (IOException e)
97 {
98 reportedException = e;
99 succeeded = false;
100 }
101
102 m_module.TriggerInventoryArchiveSaved(succeeded, m_userInfo, m_invPath, m_saveStream, reportedException);
89 } 103 }
90 104
91 protected void saveInvItem(InventoryItemBase inventoryItem, string path) 105 protected void saveInvItem(InventoryItemBase inventoryItem, string path)
@@ -115,9 +129,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver
115 writer.WriteString(inventoryItem.Owner.ToString()); 129 writer.WriteString(inventoryItem.Owner.ToString());
116 writer.WriteEndElement(); 130 writer.WriteEndElement();
117 writer.WriteStartElement("Description"); 131 writer.WriteStartElement("Description");
118 if (inventoryItem.Description.Length > 0) 132 writer.WriteString(inventoryItem.Description);
119 writer.WriteString(inventoryItem.Description);
120 else writer.WriteString("No Description");
121 writer.WriteEndElement(); 133 writer.WriteEndElement();
122 writer.WriteStartElement("AssetType"); 134 writer.WriteStartElement("AssetType");
123 writer.WriteString(inventoryItem.AssetType.ToString()); 135 writer.WriteString(inventoryItem.AssetType.ToString());
@@ -191,7 +203,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver
191 // 203 //
192 // FIXME: FetchInventory should probably be assumed to by async anyway, since even standalones might 204 // FIXME: FetchInventory should probably be assumed to by async anyway, since even standalones might
193 // use a remote inventory service, though this is vanishingly rare at the moment. 205 // use a remote inventory service, though this is vanishingly rare at the moment.
194 if (null == commsManager.UserAdminService) 206 if (null == m_module.CommsManager.UserAdminService)
195 { 207 {
196 m_log.ErrorFormat( 208 m_log.ErrorFormat(
197 "[INVENTORY ARCHIVER]: Have not yet received inventory info for user {0} {1}", 209 "[INVENTORY ARCHIVER]: Have not yet received inventory info for user {0} {1}",
@@ -242,7 +254,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver
242 } 254 }
243 else 255 else
244 { 256 {
245 m_log.InfoFormat( 257 m_log.DebugFormat(
246 "[INVENTORY ARCHIVER]: Found item {0} {1} at {2}", 258 "[INVENTORY ARCHIVER]: Found item {0} {1} at {2}",
247 inventoryItem.Name, inventoryItem.ID, m_invPath); 259 inventoryItem.Name, inventoryItem.ID, m_invPath);
248 260
@@ -252,7 +264,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver
252 } 264 }
253 else 265 else
254 { 266 {
255 m_log.InfoFormat( 267 m_log.DebugFormat(
256 "[INVENTORY ARCHIVER]: Found folder {0} {1} at {2}", 268 "[INVENTORY ARCHIVER]: Found folder {0} {1} at {2}",
257 inventoryFolder.Name, inventoryFolder.ID, m_invPath); 269 inventoryFolder.Name, inventoryFolder.ID, m_invPath);
258 270
@@ -260,7 +272,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver
260 saveInvDir(inventoryFolder, ""); 272 saveInvDir(inventoryFolder, "");
261 } 273 }
262 274
263 new AssetsRequest(assetUuids.Keys, commsManager.AssetCache, ReceivedAllAssets).Execute(); 275 new AssetsRequest(assetUuids.Keys, m_module.CommsManager.AssetCache, ReceivedAllAssets).Execute();
264 } 276 }
265 } 277 }
266} 278}