aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/CoreModules/Agent/AssetTransaction/AssetXferUploader.cs
diff options
context:
space:
mode:
Diffstat (limited to 'OpenSim/Region/CoreModules/Agent/AssetTransaction/AssetXferUploader.cs')
-rw-r--r--OpenSim/Region/CoreModules/Agent/AssetTransaction/AssetXferUploader.cs67
1 files changed, 49 insertions, 18 deletions
diff --git a/OpenSim/Region/CoreModules/Agent/AssetTransaction/AssetXferUploader.cs b/OpenSim/Region/CoreModules/Agent/AssetTransaction/AssetXferUploader.cs
index 9f05120..08c3134 100644
--- a/OpenSim/Region/CoreModules/Agent/AssetTransaction/AssetXferUploader.cs
+++ b/OpenSim/Region/CoreModules/Agent/AssetTransaction/AssetXferUploader.cs
@@ -65,11 +65,15 @@ namespace OpenSim.Region.CoreModules.Agent.AssetTransaction
65 private UUID InventFolder = UUID.Zero; 65 private UUID InventFolder = UUID.Zero;
66 private sbyte invType = 0; 66 private sbyte invType = 0;
67 67
68 private bool m_createItem = false; 68 private bool m_createItem;
69 private uint m_createItemCallback = 0; 69 private uint m_createItemCallback;
70 private bool m_updateItem = false; 70
71 private bool m_updateItem;
71 private InventoryItemBase m_updateItemData; 72 private InventoryItemBase m_updateItemData;
72 73
74 private bool m_updateTaskItem;
75 private TaskInventoryItem m_updateTaskItemData;
76
73 private string m_description = String.Empty; 77 private string m_description = String.Empty;
74 private bool m_dumpAssetToFile; 78 private bool m_dumpAssetToFile;
75 private string m_name = String.Empty; 79 private string m_name = String.Empty;
@@ -223,6 +227,12 @@ namespace OpenSim.Region.CoreModules.Agent.AssetTransaction
223 // TODO: Should probably do the same for create item. 227 // TODO: Should probably do the same for create item.
224 m_transactions.RemoveXferUploader(TransactionID); 228 m_transactions.RemoveXferUploader(TransactionID);
225 } 229 }
230 else if (m_updateTaskItem)
231 {
232 StoreAssetForTaskItemUpdate(m_updateTaskItemData);
233
234 m_transactions.RemoveXferUploader(TransactionID);
235 }
226 else if (m_storeLocal) 236 else if (m_storeLocal)
227 { 237 {
228 m_Scene.AssetService.Store(m_asset); 238 m_Scene.AssetService.Store(m_asset);
@@ -323,8 +333,30 @@ namespace OpenSim.Region.CoreModules.Agent.AssetTransaction
323 } 333 }
324 } 334 }
325 335
336 public void RequestUpdateTaskInventoryItem(IClientAPI remoteClient, UUID transactionID, TaskInventoryItem taskItem)
337 {
338 // We must lock to avoid a race with a separate thread uploading the asset.
339 lock (this)
340 {
341 m_asset.Name = taskItem.Name;
342 m_asset.Description = taskItem.Description;
343 m_asset.Type = (sbyte)taskItem.Type;
344 taskItem.AssetID = m_asset.FullID;
345
346 if (m_uploadState == UploadState.Complete)
347 {
348 StoreAssetForTaskItemUpdate(taskItem);
349 }
350 else
351 {
352 m_updateTaskItem = true;
353 m_updateTaskItemData = taskItem;
354 }
355 }
356 }
357
326 /// <summary> 358 /// <summary>
327 /// Store the asset for the given item. 359 /// Store the asset for the given item when it has been uploaded.
328 /// </summary> 360 /// </summary>
329 /// <param name="item"></param> 361 /// <param name="item"></param>
330 private void StoreAssetForItemUpdate(InventoryItemBase item) 362 private void StoreAssetForItemUpdate(InventoryItemBase item)
@@ -336,6 +368,19 @@ namespace OpenSim.Region.CoreModules.Agent.AssetTransaction
336 m_Scene.AssetService.Store(m_asset); 368 m_Scene.AssetService.Store(m_asset);
337 } 369 }
338 370
371 /// <summary>
372 /// Store the asset for the given task item when it has been uploaded.
373 /// </summary>
374 /// <param name="taskItem"></param>
375 private void StoreAssetForTaskItemUpdate(TaskInventoryItem taskItem)
376 {
377// m_log.DebugFormat(
378// "[ASSET XFER UPLOADER]: Storing asset {0} for earlier task item update for {1} for {2}",
379// m_asset.FullID, taskItem.Name, ourClient.Name);
380
381 m_Scene.AssetService.Store(m_asset);
382 }
383
339 private void DoCreateItem(uint callbackID) 384 private void DoCreateItem(uint callbackID)
340 { 385 {
341 m_Scene.AssetService.Store(m_asset); 386 m_Scene.AssetService.Store(m_asset);
@@ -363,19 +408,5 @@ namespace OpenSim.Region.CoreModules.Agent.AssetTransaction
363 else 408 else
364 ourClient.SendAlertMessage("Unable to create inventory item"); 409 ourClient.SendAlertMessage("Unable to create inventory item");
365 } 410 }
366
367 /// <summary>
368 /// Get the asset data uploaded in this transfer.
369 /// </summary>
370 /// <returns>null if the asset has not finished uploading</returns>
371 public AssetBase GetAssetData()
372 {
373 if (m_uploadState == UploadState.Complete)
374 {
375 return m_asset;
376 }
377
378 return null;
379 }
380 } 411 }
381} \ No newline at end of file 412} \ No newline at end of file