diff options
author | teravus | 2012-11-15 10:05:16 -0500 |
---|---|---|
committer | teravus | 2012-11-15 10:05:16 -0500 |
commit | e9153e1d1aae50024d8cd05fe14a9bce34343a0e (patch) | |
tree | bc111d34f95a26b99c7e34d9e495dc14d1802cc3 /OpenSim/Region/CoreModules/Avatar/Inventory/Transfer/InventoryTransferModule.cs | |
parent | Merge master into teravuswork (diff) | |
download | opensim-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.cs | 196 |
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 | ||
39 | namespace OpenSim.Region.CoreModules.Avatar.Inventory.Transfer | 39 | namespace 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 | /// |