aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/Environment/Modules/Agent/AssetTransaction/AgentAssetsTransactions.cs
diff options
context:
space:
mode:
authorJustin Clarke Casey2008-09-26 14:28:24 +0000
committerJustin Clarke Casey2008-09-26 14:28:24 +0000
commit7ee1f3dff64144050cc0f0f5e9e89fe68ccc0ae0 (patch)
treeaa4bd0710a0e892e40c3cb43c1a0f179a9283b31 /OpenSim/Region/Environment/Modules/Agent/AssetTransaction/AgentAssetsTransactions.cs
parentAnd another file (diff)
downloadopensim-SC-7ee1f3dff64144050cc0f0f5e9e89fe68ccc0ae0.zip
opensim-SC-7ee1f3dff64144050cc0f0f5e9e89fe68ccc0ae0.tar.gz
opensim-SC-7ee1f3dff64144050cc0f0f5e9e89fe68ccc0ae0.tar.bz2
opensim-SC-7ee1f3dff64144050cc0f0f5e9e89fe68ccc0ae0.tar.xz
* Implment task inventory item asset update for the old non CAPS transaction system
* This means that saving notecards in prim inventories should now work. * Not the nicest code in the world - the transactions system is pretty fugly right now * PLEASE NOTE: Currently, the prim will not repersist until up to 15 seconds after it is unselected. * What we really need is a proper mechanism so that any prim updates still waiting when the simulator is quit are performed before exit.
Diffstat (limited to 'OpenSim/Region/Environment/Modules/Agent/AssetTransaction/AgentAssetsTransactions.cs')
-rw-r--r--OpenSim/Region/Environment/Modules/Agent/AssetTransaction/AgentAssetsTransactions.cs52
1 files changed, 37 insertions, 15 deletions
diff --git a/OpenSim/Region/Environment/Modules/Agent/AssetTransaction/AgentAssetsTransactions.cs b/OpenSim/Region/Environment/Modules/Agent/AssetTransaction/AgentAssetsTransactions.cs
index c46c4a4..b32d199 100644
--- a/OpenSim/Region/Environment/Modules/Agent/AssetTransaction/AgentAssetsTransactions.cs
+++ b/OpenSim/Region/Environment/Modules/Agent/AssetTransaction/AgentAssetsTransactions.cs
@@ -28,10 +28,13 @@
28using System; 28using System;
29using System.Collections.Generic; 29using System.Collections.Generic;
30using System.IO; 30using System.IO;
31using System.Reflection;
32using log4net;
31using OpenMetaverse; 33using OpenMetaverse;
32using OpenMetaverse.Packets; 34using OpenMetaverse.Packets;
33using OpenSim.Framework; 35using OpenSim.Framework;
34using OpenSim.Framework.Communications.Cache; 36using OpenSim.Framework.Communications.Cache;
37using OpenSim.Region.Environment.Scenes;
35 38
36namespace OpenSim.Region.Environment.Modules.Agent.AssetTransaction 39namespace OpenSim.Region.Environment.Modules.Agent.AssetTransaction
37{ 40{
@@ -74,9 +77,7 @@ namespace OpenSim.Region.Environment.Modules.Agent.AssetTransaction
74 } 77 }
75 78
76 public void HandleXfer(ulong xferID, uint packetID, byte[] data) 79 public void HandleXfer(ulong xferID, uint packetID, byte[] data)
77 { 80 {
78 // AssetXferUploader uploaderFound = null;
79
80 lock (XferUploaders) 81 lock (XferUploaders)
81 { 82 {
82 foreach (AssetXferUploader uploader in XferUploaders.Values) 83 foreach (AssetXferUploader uploader in XferUploaders.Values)
@@ -110,6 +111,15 @@ namespace OpenSim.Region.Environment.Modules.Agent.AssetTransaction
110 XferUploaders[transactionID].RequestUpdateInventoryItem(remoteClient, transactionID, item); 111 XferUploaders[transactionID].RequestUpdateInventoryItem(remoteClient, transactionID, item);
111 } 112 }
112 } 113 }
114
115 public void RequestUpdateTaskInventoryItem(
116 IClientAPI remoteClient, SceneObjectPart part, UUID transactionID, TaskInventoryItem item)
117 {
118 if (XferUploaders.ContainsKey(transactionID))
119 {
120 XferUploaders[transactionID].RequestUpdateTaskInventoryItem(remoteClient, part, transactionID, item);
121 }
122 }
113 123
114 /// <summary> 124 /// <summary>
115 /// Get an uploaded asset. If the data is successfully retrieved, the transaction will be removed. 125 /// Get an uploaded asset. If the data is successfully retrieved, the transaction will be removed.
@@ -140,6 +150,8 @@ namespace OpenSim.Region.Environment.Modules.Agent.AssetTransaction
140 150
141 public class AssetXferUploader 151 public class AssetXferUploader
142 { 152 {
153 private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
154
143 // Fields 155 // Fields
144 public bool AddToInventory; 156 public bool AddToInventory;
145 public AssetBase Asset; 157 public AssetBase Asset;
@@ -225,6 +237,7 @@ namespace OpenSim.Region.Environment.Modules.Agent.AssetTransaction
225 237
226 TransactionID = transaction; 238 TransactionID = transaction;
227 m_storeLocal = storeLocal; 239 m_storeLocal = storeLocal;
240
228 if (Asset.Data.Length > 2) 241 if (Asset.Data.Length > 2)
229 { 242 {
230 SendCompleteMessage(); 243 SendCompleteMessage();
@@ -251,7 +264,6 @@ namespace OpenSim.Region.Environment.Modules.Agent.AssetTransaction
251 264
252 ourClient.SendAssetUploadCompleteMessage(Asset.Type, true, Asset.FullID); 265 ourClient.SendAssetUploadCompleteMessage(Asset.Type, true, Asset.FullID);
253 266
254
255 m_finished = true; 267 m_finished = true;
256 if (m_createItem) 268 if (m_createItem)
257 { 269 {
@@ -262,7 +274,7 @@ namespace OpenSim.Region.Environment.Modules.Agent.AssetTransaction
262 m_userTransactions.Manager.MyScene.CommsManager.AssetCache.AddAsset(Asset); 274 m_userTransactions.Manager.MyScene.CommsManager.AssetCache.AddAsset(Asset);
263 } 275 }
264 276
265 // Console.WriteLine("upload complete "+ this.TransactionID); 277 m_log.DebugFormat("[ASSET TRANSACTIONS]: Uploaded asset data for transaction {0}", TransactionID);
266 278
267 if (m_dumpAssetToFile) 279 if (m_dumpAssetToFile)
268 { 280 {
@@ -274,15 +286,6 @@ namespace OpenSim.Region.Environment.Modules.Agent.AssetTransaction
274 } 286 }
275 } 287 }
276 288
277 ///Left this in and commented in case there are unforseen issues
278 //private void SaveAssetToFile(string filename, byte[] data)
279 //{
280 // FileStream fs = File.Create(filename);
281 // BinaryWriter bw = new BinaryWriter(fs);
282 // bw.Write(data);
283 // bw.Close();
284 // fs.Close();
285 //}
286 private void SaveAssetToFile(string filename, byte[] data) 289 private void SaveAssetToFile(string filename, byte[] data)
287 { 290 {
288 string assetPath = "UserAssets"; 291 string assetPath = "UserAssets";
@@ -314,6 +317,7 @@ namespace OpenSim.Region.Environment.Modules.Agent.AssetTransaction
314 Asset.Description = description; 317 Asset.Description = description;
315 Asset.Type = type; 318 Asset.Type = type;
316 m_createItem = true; 319 m_createItem = true;
320
317 if (m_finished) 321 if (m_finished)
318 { 322 {
319 DoCreateItem(); 323 DoCreateItem();
@@ -359,7 +363,25 @@ namespace OpenSim.Region.Environment.Modules.Agent.AssetTransaction
359 } 363 }
360 } 364 }
361 } 365 }
362 366
367 public void RequestUpdateTaskInventoryItem(
368 IClientAPI remoteClient, SceneObjectPart part, UUID transactionID, TaskInventoryItem item)
369 {
370 m_log.DebugFormat(
371 "[ASSET TRANSACTIONS]: Updating task item {0} in {1} with asset in transaction {2}",
372 item.Name, part.Name, transactionID);
373
374 Asset.Name = item.Name;
375 Asset.Description = item.Description;
376 Asset.Type = (sbyte) item.Type;
377 item.AssetID = Asset.FullID;
378
379 m_userTransactions.Manager.MyScene.CommsManager.AssetCache.AddAsset(Asset);
380
381 if (part.UpdateInventoryItem(item))
382 part.GetProperties(remoteClient);
383 }
384
363 private void DoCreateItem() 385 private void DoCreateItem()
364 { 386 {
365 //really need to fix this call, if lbsa71 saw this he would die. 387 //really need to fix this call, if lbsa71 saw this he would die.