aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/CoreModules/Avatar/Inventory/Transfer/InventoryTransferModule.cs
diff options
context:
space:
mode:
authorteravus2012-11-15 10:05:16 -0500
committerteravus2012-11-15 10:05:16 -0500
commite9153e1d1aae50024d8cd05fe14a9bce34343a0e (patch)
treebc111d34f95a26b99c7e34d9e495dc14d1802cc3 /OpenSim/Region/CoreModules/Avatar/Inventory/Transfer/InventoryTransferModule.cs
parentMerge master into teravuswork (diff)
downloadopensim-SC_OLD-e9153e1d1aae50024d8cd05fe14a9bce34343a0e.zip
opensim-SC_OLD-e9153e1d1aae50024d8cd05fe14a9bce34343a0e.tar.gz
opensim-SC_OLD-e9153e1d1aae50024d8cd05fe14a9bce34343a0e.tar.bz2
opensim-SC_OLD-e9153e1d1aae50024d8cd05fe14a9bce34343a0e.tar.xz
Revert "Merge master into teravuswork", it should have been avination, not master.
This reverts commit dfac269032300872c4d0dc507f4f9062d102b0f4, reversing changes made to 619c39e5144f15aca129d6d999bcc5c34133ee64.
Diffstat (limited to '')
-rw-r--r--OpenSim/Region/CoreModules/Avatar/Inventory/Transfer/InventoryTransferModule.cs196
1 files changed, 77 insertions, 119 deletions
diff --git a/OpenSim/Region/CoreModules/Avatar/Inventory/Transfer/InventoryTransferModule.cs b/OpenSim/Region/CoreModules/Avatar/Inventory/Transfer/InventoryTransferModule.cs
index e26beec..8176989 100644
--- a/OpenSim/Region/CoreModules/Avatar/Inventory/Transfer/InventoryTransferModule.cs
+++ b/OpenSim/Region/CoreModules/Avatar/Inventory/Transfer/InventoryTransferModule.cs
@@ -38,15 +38,15 @@ using OpenSim.Services.Interfaces;
38 38
39namespace OpenSim.Region.CoreModules.Avatar.Inventory.Transfer 39namespace OpenSim.Region.CoreModules.Avatar.Inventory.Transfer
40{ 40{
41 public class InventoryTransferModule : ISharedRegionModule 41 public class InventoryTransferModule : IInventoryTransferModule, ISharedRegionModule
42 { 42 {
43 private static readonly ILog m_log 43 private static readonly ILog m_log
44 = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); 44 = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
45 45
46 /// <summary> 46 /// <summary>
47 private List<Scene> m_Scenelist = new List<Scene>(); 47 private List<Scene> m_Scenelist = new List<Scene>();
48// private Dictionary<UUID, Scene> m_AgentRegions = 48 private Dictionary<UUID, Scene> m_AgentRegions =
49// new Dictionary<UUID, Scene>(); 49 new Dictionary<UUID, Scene>();
50 50
51 private IMessageTransferModule m_TransferModule = null; 51 private IMessageTransferModule m_TransferModule = null;
52 private bool m_Enabled = true; 52 private bool m_Enabled = true;
@@ -76,12 +76,12 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Transfer
76 76
77 m_Scenelist.Add(scene); 77 m_Scenelist.Add(scene);
78 78
79// scene.RegisterModuleInterface<IInventoryTransferModule>(this); 79 scene.RegisterModuleInterface<IInventoryTransferModule>(this);
80 80
81 scene.EventManager.OnNewClient += OnNewClient; 81 scene.EventManager.OnNewClient += OnNewClient;
82// scene.EventManager.OnClientClosed += ClientLoggedOut; 82 scene.EventManager.OnClientClosed += ClientLoggedOut;
83 scene.EventManager.OnIncomingInstantMessage += OnGridInstantMessage; 83 scene.EventManager.OnIncomingInstantMessage += OnGridInstantMessage;
84// scene.EventManager.OnSetRootAgentScene += OnSetRootAgentScene; 84 scene.EventManager.OnSetRootAgentScene += OnSetRootAgentScene;
85 } 85 }
86 86
87 public void RegionLoaded(Scene scene) 87 public void RegionLoaded(Scene scene)
@@ -96,9 +96,9 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Transfer
96 96
97 m_Scenelist.Clear(); 97 m_Scenelist.Clear();
98 scene.EventManager.OnNewClient -= OnNewClient; 98 scene.EventManager.OnNewClient -= OnNewClient;
99// scene.EventManager.OnClientClosed -= ClientLoggedOut; 99 scene.EventManager.OnClientClosed -= ClientLoggedOut;
100 scene.EventManager.OnIncomingInstantMessage -= OnGridInstantMessage; 100 scene.EventManager.OnIncomingInstantMessage -= OnGridInstantMessage;
101// scene.EventManager.OnSetRootAgentScene -= OnSetRootAgentScene; 101 scene.EventManager.OnSetRootAgentScene -= OnSetRootAgentScene;
102 } 102 }
103 } 103 }
104 } 104 }
@@ -106,9 +106,9 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Transfer
106 public void RemoveRegion(Scene scene) 106 public void RemoveRegion(Scene scene)
107 { 107 {
108 scene.EventManager.OnNewClient -= OnNewClient; 108 scene.EventManager.OnNewClient -= OnNewClient;
109// scene.EventManager.OnClientClosed -= ClientLoggedOut; 109 scene.EventManager.OnClientClosed -= ClientLoggedOut;
110 scene.EventManager.OnIncomingInstantMessage -= OnGridInstantMessage; 110 scene.EventManager.OnIncomingInstantMessage -= OnGridInstantMessage;
111// scene.EventManager.OnSetRootAgentScene -= OnSetRootAgentScene; 111 scene.EventManager.OnSetRootAgentScene -= OnSetRootAgentScene;
112 m_Scenelist.Remove(scene); 112 m_Scenelist.Remove(scene);
113 } 113 }
114 114
@@ -138,10 +138,10 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Transfer
138 client.OnInstantMessage += OnInstantMessage; 138 client.OnInstantMessage += OnInstantMessage;
139 } 139 }
140 140
141// protected void OnSetRootAgentScene(UUID id, Scene scene) 141 protected void OnSetRootAgentScene(UUID id, Scene scene)
142// { 142 {
143// m_AgentRegions[id] = scene; 143 m_AgentRegions[id] = scene;
144// } 144 }
145 145
146 private Scene FindClientScene(UUID agentId) 146 private Scene FindClientScene(UUID agentId)
147 { 147 {
@@ -313,11 +313,6 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Transfer
313 m_TransferModule.SendInstantMessage(im, delegate(bool success) {}); 313 m_TransferModule.SendInstantMessage(im, delegate(bool success) {});
314 } 314 }
315 } 315 }
316
317 // XXX: This code was placed here to try and accomdate RLV which moves given folders named #RLV/~<name>
318 // to a folder called name in #RLV. However, this approach may not be ultimately correct - from analysis
319 // of Firestorm 4.2.2 on sending an InventoryOffered instead of TaskInventoryOffered (as was previously
320 // done), the viewer itself would appear to move and rename the folder, rather than the simulator doing it here.
321 else if (im.dialog == (byte) InstantMessageDialog.TaskInventoryAccepted) 316 else if (im.dialog == (byte) InstantMessageDialog.TaskInventoryAccepted)
322 { 317 {
323 UUID destinationFolderID = UUID.Zero; 318 UUID destinationFolderID = UUID.Zero;
@@ -329,16 +324,6 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Transfer
329 324
330 if (destinationFolderID != UUID.Zero) 325 if (destinationFolderID != UUID.Zero)
331 { 326 {
332 InventoryFolderBase destinationFolder = new InventoryFolderBase(destinationFolderID, client.AgentId);
333 if (destinationFolder == null)
334 {
335 m_log.WarnFormat(
336 "[INVENTORY TRANSFER]: TaskInventoryAccepted message from {0} in {1} specified folder {2} which does not exist",
337 client.Name, scene.Name, destinationFolderID);
338
339 return;
340 }
341
342 IInventoryService invService = scene.InventoryService; 327 IInventoryService invService = scene.InventoryService;
343 328
344 UUID inventoryID = new UUID(im.imSessionID); // The inventory item/folder, back from it's trip 329 UUID inventoryID = new UUID(im.imSessionID); // The inventory item/folder, back from it's trip
@@ -346,11 +331,9 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Transfer
346 InventoryItemBase item = new InventoryItemBase(inventoryID, client.AgentId); 331 InventoryItemBase item = new InventoryItemBase(inventoryID, client.AgentId);
347 item = invService.GetItem(item); 332 item = invService.GetItem(item);
348 InventoryFolderBase folder = null; 333 InventoryFolderBase folder = null;
349 UUID? previousParentFolderID = null;
350 334
351 if (item != null) // It's an item 335 if (item != null) // It's an item
352 { 336 {
353 previousParentFolderID = item.Folder;
354 item.Folder = destinationFolderID; 337 item.Folder = destinationFolderID;
355 338
356 invService.DeleteItems(item.Owner, new List<UUID>() { item.ID }); 339 invService.DeleteItems(item.Owner, new List<UUID>() { item.ID });
@@ -363,22 +346,10 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Transfer
363 346
364 if (folder != null) // It's a folder 347 if (folder != null) // It's a folder
365 { 348 {
366 previousParentFolderID = folder.ParentID;
367 folder.ParentID = destinationFolderID; 349 folder.ParentID = destinationFolderID;
368 invService.MoveFolder(folder); 350 invService.MoveFolder(folder);
369 } 351 }
370 } 352 }
371
372 // Tell client about updates to original parent and new parent (this should probably be factored with existing move item/folder code).
373 if (previousParentFolderID != null)
374 {
375 InventoryFolderBase previousParentFolder
376 = new InventoryFolderBase((UUID)previousParentFolderID, client.AgentId);
377 previousParentFolder = invService.GetFolder(previousParentFolder);
378 scene.SendInventoryUpdate(client, previousParentFolder, true, true);
379
380 scene.SendInventoryUpdate(client, destinationFolder, true, true);
381 }
382 } 353 }
383 } 354 }
384 else if ( 355 else if (
@@ -399,11 +370,9 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Transfer
399 InventoryItemBase item = new InventoryItemBase(inventoryID, client.AgentId); 370 InventoryItemBase item = new InventoryItemBase(inventoryID, client.AgentId);
400 item = invService.GetItem(item); 371 item = invService.GetItem(item);
401 InventoryFolderBase folder = null; 372 InventoryFolderBase folder = null;
402 UUID? previousParentFolderID = null;
403 373
404 if (item != null && trashFolder != null) 374 if (item != null && trashFolder != null)
405 { 375 {
406 previousParentFolderID = item.Folder;
407 item.Folder = trashFolder.ID; 376 item.Folder = trashFolder.ID;
408 377
409 // Diva comment: can't we just update this item??? 378 // Diva comment: can't we just update this item???
@@ -419,7 +388,6 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Transfer
419 388
420 if (folder != null & trashFolder != null) 389 if (folder != null & trashFolder != null)
421 { 390 {
422 previousParentFolderID = folder.ParentID;
423 folder.ParentID = trashFolder.ID; 391 folder.ParentID = trashFolder.ID;
424 invService.MoveFolder(folder); 392 invService.MoveFolder(folder);
425 client.SendBulkUpdateInventory(folder); 393 client.SendBulkUpdateInventory(folder);
@@ -440,16 +408,6 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Transfer
440 client.SendAgentAlertMessage("Unable to delete "+ 408 client.SendAgentAlertMessage("Unable to delete "+
441 "received inventory" + reason, false); 409 "received inventory" + reason, false);
442 } 410 }
443 // Tell client about updates to original parent and new parent (this should probably be factored with existing move item/folder code).
444 else if (previousParentFolderID != null)
445 {
446 InventoryFolderBase previousParentFolder
447 = new InventoryFolderBase((UUID)previousParentFolderID, client.AgentId);
448 previousParentFolder = invService.GetFolder(previousParentFolder);
449 scene.SendInventoryUpdate(client, previousParentFolder, true, true);
450
451 scene.SendInventoryUpdate(client, trashFolder, true, true);
452 }
453 411
454 if (im.dialog == (byte)InstantMessageDialog.InventoryDeclined) 412 if (im.dialog == (byte)InstantMessageDialog.InventoryDeclined)
455 { 413 {
@@ -468,69 +426,69 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Transfer
468 } 426 }
469 } 427 }
470 428
471// public bool NeedSceneCacheClear(UUID agentID, Scene scene) 429 public bool NeedSceneCacheClear(UUID agentID, Scene scene)
472// { 430 {
473// if (!m_AgentRegions.ContainsKey(agentID)) 431 if (!m_AgentRegions.ContainsKey(agentID))
474// { 432 {
475// // Since we can get here two ways, we need to scan 433 // Since we can get here two ways, we need to scan
476// // the scenes here. This is somewhat more expensive 434 // the scenes here. This is somewhat more expensive
477// // but helps avoid a nasty bug 435 // but helps avoid a nasty bug
478// // 436 //
479// 437
480// foreach (Scene s in m_Scenelist) 438 foreach (Scene s in m_Scenelist)
481// { 439 {
482// ScenePresence presence; 440 ScenePresence presence;
483// 441
484// if (s.TryGetScenePresence(agentID, out presence)) 442 if (s.TryGetScenePresence(agentID, out presence))
485// { 443 {
486// // If the agent is in this scene, then we 444 // If the agent is in this scene, then we
487// // are being called twice in a single 445 // are being called twice in a single
488// // teleport. This is wasteful of cycles 446 // teleport. This is wasteful of cycles
489// // but harmless due to this 2nd level check 447 // but harmless due to this 2nd level check
490// // 448 //
491// // If the agent is found in another scene 449 // If the agent is found in another scene
492// // then the list wasn't current 450 // then the list wasn't current
493// // 451 //
494// // If the agent is totally unknown, then what 452 // If the agent is totally unknown, then what
495// // are we even doing here?? 453 // are we even doing here??
496// // 454 //
497// if (s == scene) 455 if (s == scene)
498// { 456 {
499// //m_log.Debug("[INVTRANSFERMOD]: s == scene. Returning true in " + scene.RegionInfo.RegionName); 457 //m_log.Debug("[INVTRANSFERMOD]: s == scene. Returning true in " + scene.RegionInfo.RegionName);
500// return true; 458 return true;
501// } 459 }
502// else 460 else
503// { 461 {
504// //m_log.Debug("[INVTRANSFERMOD]: s != scene. Returning false in " + scene.RegionInfo.RegionName); 462 //m_log.Debug("[INVTRANSFERMOD]: s != scene. Returning false in " + scene.RegionInfo.RegionName);
505// return false; 463 return false;
506// } 464 }
507// } 465 }
508// } 466 }
509// //m_log.Debug("[INVTRANSFERMOD]: agent not in scene. Returning true in " + scene.RegionInfo.RegionName); 467 //m_log.Debug("[INVTRANSFERMOD]: agent not in scene. Returning true in " + scene.RegionInfo.RegionName);
510// return true; 468 return true;
511// } 469 }
512// 470
513// // The agent is left in current Scene, so we must be 471 // The agent is left in current Scene, so we must be
514// // going to another instance 472 // going to another instance
515// // 473 //
516// if (m_AgentRegions[agentID] == scene) 474 if (m_AgentRegions[agentID] == scene)
517// { 475 {
518// //m_log.Debug("[INVTRANSFERMOD]: m_AgentRegions[agentID] == scene. Returning true in " + scene.RegionInfo.RegionName); 476 //m_log.Debug("[INVTRANSFERMOD]: m_AgentRegions[agentID] == scene. Returning true in " + scene.RegionInfo.RegionName);
519// m_AgentRegions.Remove(agentID); 477 m_AgentRegions.Remove(agentID);
520// return true; 478 return true;
521// } 479 }
522// 480
523// // Another region has claimed the agent 481 // Another region has claimed the agent
524// // 482 //
525// //m_log.Debug("[INVTRANSFERMOD]: last resort. Returning false in " + scene.RegionInfo.RegionName); 483 //m_log.Debug("[INVTRANSFERMOD]: last resort. Returning false in " + scene.RegionInfo.RegionName);
526// return false; 484 return false;
527// } 485 }
528// 486
529// public void ClientLoggedOut(UUID agentID, Scene scene) 487 public void ClientLoggedOut(UUID agentID, Scene scene)
530// { 488 {
531// if (m_AgentRegions.ContainsKey(agentID)) 489 if (m_AgentRegions.ContainsKey(agentID))
532// m_AgentRegions.Remove(agentID); 490 m_AgentRegions.Remove(agentID);
533// } 491 }
534 492
535 /// <summary> 493 /// <summary>
536 /// 494 ///