diff options
Diffstat (limited to 'OpenSim/Framework/Communications/Cache/CachedUserInfo.cs')
-rw-r--r-- | OpenSim/Framework/Communications/Cache/CachedUserInfo.cs | 51 |
1 files changed, 50 insertions, 1 deletions
diff --git a/OpenSim/Framework/Communications/Cache/CachedUserInfo.cs b/OpenSim/Framework/Communications/Cache/CachedUserInfo.cs index 03ba1db..218fd5a 100644 --- a/OpenSim/Framework/Communications/Cache/CachedUserInfo.cs +++ b/OpenSim/Framework/Communications/Cache/CachedUserInfo.cs | |||
@@ -42,7 +42,10 @@ namespace OpenSim.Framework.Communications.Cache | |||
42 | internal delegate void CreateFolderDelegate(string folderName, LLUUID folderID, ushort folderType, LLUUID parentID); | 42 | internal delegate void CreateFolderDelegate(string folderName, LLUUID folderID, ushort folderType, LLUUID parentID); |
43 | internal delegate void MoveFolderDelegate(LLUUID folderID, LLUUID parentID); | 43 | internal delegate void MoveFolderDelegate(LLUUID folderID, LLUUID parentID); |
44 | internal delegate void PurgeFolderDelegate(LLUUID folderID); | 44 | internal delegate void PurgeFolderDelegate(LLUUID folderID); |
45 | internal delegate void UpdateFolderDelegate(string name, LLUUID folderID, ushort type, LLUUID parentID); | 45 | internal delegate void UpdateFolderDelegate(string name, LLUUID folderID, ushort type, LLUUID parentID); |
46 | |||
47 | internal delegate void SendInventoryDescendentsDelegate( | ||
48 | IClientAPI client, LLUUID folderID, bool fetchFolders, bool fetchItems); | ||
46 | 49 | ||
47 | /// <summary> | 50 | /// <summary> |
48 | /// Stores user profile and inventory data received from backend services for a particular user. | 51 | /// Stores user profile and inventory data received from backend services for a particular user. |
@@ -557,6 +560,52 @@ namespace OpenSim.Framework.Communications.Cache | |||
557 | 560 | ||
558 | return false; | 561 | return false; |
559 | } | 562 | } |
563 | |||
564 | /// <summary> | ||
565 | /// Send details of the inventory items and/or folders in a given folder to the client. | ||
566 | /// </summary> | ||
567 | /// <param name="client"></param> | ||
568 | /// <param name="folderID"></param> | ||
569 | /// <param name="fetchFolders"></param> | ||
570 | /// <param name="fetchItems"></param> | ||
571 | /// <returns>true if the request was queued or successfully processed, false otherwise</returns> | ||
572 | public bool SendInventoryDecendents(IClientAPI client, LLUUID folderID, bool fetchFolders, bool fetchItems) | ||
573 | { | ||
574 | if (HasInventory) | ||
575 | { | ||
576 | InventoryFolderImpl folder; | ||
577 | |||
578 | if ((folder = RootFolder.FindFolder(folderID)) != null) | ||
579 | { | ||
580 | // m_log.DebugFormat( | ||
581 | // "[AGENT INVENTORY]: Found folder {0} for client {1}", | ||
582 | // folderID, remoteClient.AgentId); | ||
583 | |||
584 | client.SendInventoryFolderDetails( | ||
585 | client.AgentId, folderID, folder.RequestListOfItems(), | ||
586 | folder.RequestListOfFolders(), fetchFolders, fetchItems); | ||
587 | |||
588 | return true; | ||
589 | } | ||
590 | else | ||
591 | { | ||
592 | m_log.WarnFormat( | ||
593 | "[AGENT INVENTORY]: Could not find folder {0} requested by user {1} {2}", | ||
594 | folderID, client.Name, client.AgentId); | ||
595 | |||
596 | return false; | ||
597 | } | ||
598 | } | ||
599 | else | ||
600 | { | ||
601 | AddRequest( | ||
602 | new InventoryRequest( | ||
603 | Delegate.CreateDelegate(typeof(SendInventoryDescendentsDelegate), this, "SendInventoryDecendents"), | ||
604 | new object[] { client, folderID, fetchFolders, fetchItems })); | ||
605 | |||
606 | return true; | ||
607 | } | ||
608 | } | ||
560 | } | 609 | } |
561 | 610 | ||
562 | /// <summary> | 611 | /// <summary> |