/// <summary> /// Get an uploaded asset. If the data is successfully retrieved, the transaction will be removed. /// </summary> /// <param name = "transactionID"></param> /// <returns>The asset if the upload has completed, null if it has not.</returns> public AssetBase GetTransactionAsset(UUID transactionID) { if (XferUploaders.ContainsKey(transactionID)) { AssetXferUploader uploader = XferUploaders[transactionID]; AssetBase asset = uploader.GetAssetData(); lock (XferUploaders) { XferUploaders.Remove(transactionID); } return(asset); } return(null); }
private void UpdateInventoryItemWithAsset(InventoryItemBase item, UUID assetID, UUID transactionID) { AssetXferUploader uploader = XferUploaders[transactionID]; AssetBase asset = uploader.GetAssetData(); if (asset != null && asset.ID == assetID) { // Assets never get updated, new ones get created asset.ID = UUID.Random(); asset.Name = item.Name; asset.Description = item.Description; asset.Type = (sbyte)item.AssetType; item.AssetID = asset.ID; asset.ID = Manager.MyScene.AssetService.Store(asset); item.AssetID = asset.ID; XferUploaders.Remove(transactionID); } else { return; } IMonitorModule monitorModule = Manager.MyScene.RequestModuleInterface <IMonitorModule>(); if (monitorModule != null) { INetworkMonitor networkMonitor = (INetworkMonitor) monitorModule.GetMonitor(Manager.MyScene.RegionInfo.RegionID.ToString(), MonitorModuleHelper.NetworkMonitor); networkMonitor.AddPendingUploads(-1); } IInventoryService invService = Manager.MyScene.InventoryService; invService.UpdateItem(item); }