diff options
Diffstat (limited to 'OpenSim/Framework/Communications/Cache/CachedUserInfo.cs')
-rw-r--r-- | OpenSim/Framework/Communications/Cache/CachedUserInfo.cs | 61 |
1 files changed, 50 insertions, 11 deletions
diff --git a/OpenSim/Framework/Communications/Cache/CachedUserInfo.cs b/OpenSim/Framework/Communications/Cache/CachedUserInfo.cs index 6a7b6b7..84e42a3 100644 --- a/OpenSim/Framework/Communications/Cache/CachedUserInfo.cs +++ b/OpenSim/Framework/Communications/Cache/CachedUserInfo.cs | |||
@@ -35,7 +35,8 @@ using log4net; | |||
35 | 35 | ||
36 | namespace OpenSim.Framework.Communications.Cache | 36 | namespace OpenSim.Framework.Communications.Cache |
37 | { | 37 | { |
38 | //internal delegate void DeleteItemDelegate( | 38 | internal delegate void DeleteItemDelegate(LLUUID itemID); |
39 | |||
39 | internal delegate void CreateFolderDelegate(string folderName, LLUUID folderID, ushort folderType, LLUUID parentID); | 40 | internal delegate void CreateFolderDelegate(string folderName, LLUUID folderID, ushort folderType, LLUUID parentID); |
40 | internal delegate void MoveFolderDelegate(LLUUID folderID, LLUUID parentID); | 41 | internal delegate void MoveFolderDelegate(LLUUID folderID, LLUUID parentID); |
41 | internal delegate void PurgeFolderDelegate(LLUUID folderID); | 42 | internal delegate void PurgeFolderDelegate(LLUUID folderID); |
@@ -306,7 +307,10 @@ namespace OpenSim.Framework.Communications.Cache | |||
306 | } | 307 | } |
307 | 308 | ||
308 | /// <summary> | 309 | /// <summary> |
309 | /// Create a folder in this agent's inventory | 310 | /// Create a folder in this agent's inventory. |
311 | /// | ||
312 | /// If the inventory service has not yet delievered the inventory | ||
313 | /// for this user then the request will be queued. | ||
310 | /// </summary> | 314 | /// </summary> |
311 | /// <param name="parentID"></param> | 315 | /// <param name="parentID"></param> |
312 | /// <returns></returns> | 316 | /// <returns></returns> |
@@ -399,10 +403,14 @@ namespace OpenSim.Framework.Communications.Cache | |||
399 | /// <summary> | 403 | /// <summary> |
400 | /// Handle a client request to update the inventory folder | 404 | /// Handle a client request to update the inventory folder |
401 | /// | 405 | /// |
406 | /// If the inventory service has not yet delievered the inventory | ||
407 | /// for this user then the request will be queued. | ||
408 | /// | ||
402 | /// FIXME: We call add new inventory folder because in the data layer, we happen to use an SQL REPLACE | 409 | /// FIXME: We call add new inventory folder because in the data layer, we happen to use an SQL REPLACE |
403 | /// so this will work to rename an existing folder. Needless to say, to rely on this is very confusing, | 410 | /// so this will work to rename an existing folder. Needless to say, to rely on this is very confusing, |
404 | /// and needs to be changed. | 411 | /// and needs to be changed. |
405 | /// </summary> | 412 | /// </summary> |
413 | /// | ||
406 | /// <param name="folderID"></param> | 414 | /// <param name="folderID"></param> |
407 | /// <param name="type"></param> | 415 | /// <param name="type"></param> |
408 | /// <param name="name"></param> | 416 | /// <param name="name"></param> |
@@ -437,7 +445,11 @@ namespace OpenSim.Framework.Communications.Cache | |||
437 | 445 | ||
438 | /// <summary> | 446 | /// <summary> |
439 | /// Handle an inventory folder move request from the client. | 447 | /// Handle an inventory folder move request from the client. |
448 | /// | ||
449 | /// If the inventory service has not yet delievered the inventory | ||
450 | /// for this user then the request will be queued. | ||
440 | /// </summary> | 451 | /// </summary> |
452 | /// | ||
441 | /// <param name="folderID"></param> | 453 | /// <param name="folderID"></param> |
442 | /// <param name="parentID"></param> | 454 | /// <param name="parentID"></param> |
443 | public bool MoveFolder(LLUUID folderID, LLUUID parentID) | 455 | public bool MoveFolder(LLUUID folderID, LLUUID parentID) |
@@ -470,7 +482,11 @@ namespace OpenSim.Framework.Communications.Cache | |||
470 | 482 | ||
471 | /// <summary> | 483 | /// <summary> |
472 | /// This method will delete all the items and folders in the given folder. | 484 | /// This method will delete all the items and folders in the given folder. |
485 | /// | ||
486 | /// If the inventory service has not yet delievered the inventory | ||
487 | /// for this user then the request will be queued. | ||
473 | /// </summary> | 488 | /// </summary> |
489 | /// | ||
474 | /// <param name="folderID"></param> | 490 | /// <param name="folderID"></param> |
475 | public bool PurgeFolder(LLUUID folderID) | 491 | public bool PurgeFolder(LLUUID folderID) |
476 | { | 492 | { |
@@ -540,23 +556,46 @@ namespace OpenSim.Framework.Communications.Cache | |||
540 | 556 | ||
541 | /// <summary> | 557 | /// <summary> |
542 | /// Delete an item from the user's inventory | 558 | /// Delete an item from the user's inventory |
559 | /// | ||
560 | /// If the inventory service has not yet delievered the inventory | ||
561 | /// for this user then the request will be queued. | ||
543 | /// </summary> | 562 | /// </summary> |
544 | /// <param name="userID"></param> | 563 | /// <param name="itemID"></param> |
545 | /// <param name="item"></param> | 564 | /// <returns> |
546 | /// <returns></returns> | 565 | /// true on a successful delete or a if the request is queued. |
547 | public bool DeleteItem(InventoryItemBase item) | 566 | /// Returns false on an immediate failure |
567 | /// </returns> | ||
568 | public bool DeleteItem(LLUUID itemID) | ||
548 | { | 569 | { |
549 | bool result = false; | ||
550 | if (HasInventory) | 570 | if (HasInventory) |
551 | { | 571 | { |
552 | result = RootFolder.DeleteItem(item.ID); | 572 | // XXX For historical reasons (grid comms), we need to retrieve the whole item in order to delete, even though |
553 | if (result) | 573 | // really only the item id is required. |
574 | InventoryItemBase item = RootFolder.FindItem(itemID); | ||
575 | |||
576 | if (null == item) | ||
554 | { | 577 | { |
555 | m_commsManager.InventoryService.DeleteItem(item); | 578 | m_log.WarnFormat("[AGENT INVENTORY]: Tried to delete item {0} which does not exist", itemID); |
579 | |||
580 | return false; | ||
581 | } | ||
582 | |||
583 | if (RootFolder.DeleteItem(item.ID)) | ||
584 | { | ||
585 | return m_commsManager.InventoryService.DeleteItem(item); | ||
556 | } | 586 | } |
557 | } | 587 | } |
588 | else | ||
589 | { | ||
590 | AddRequest( | ||
591 | new InventoryRequest( | ||
592 | Delegate.CreateDelegate(typeof(DeleteItemDelegate), this, "DeleteItem"), | ||
593 | new object[] { itemID })); | ||
594 | |||
595 | return true; | ||
596 | } | ||
558 | 597 | ||
559 | return result; | 598 | return false; |
560 | } | 599 | } |
561 | } | 600 | } |
562 | 601 | ||