From 5ad4c79a4e5e2d6c9ba26034e5b325007f0b6f7a Mon Sep 17 00:00:00 2001 From: Justin Clarke Casey Date: Thu, 10 Apr 2008 16:04:19 +0000 Subject: * Refactor GetUsersInventory() --- .../Grid/InventoryServer/GridInventoryService.cs | 42 +++++++++++++++++----- 1 file changed, 33 insertions(+), 9 deletions(-) (limited to 'OpenSim/Grid') diff --git a/OpenSim/Grid/InventoryServer/GridInventoryService.cs b/OpenSim/Grid/InventoryServer/GridInventoryService.cs index ffff89f..e30c31e 100644 --- a/OpenSim/Grid/InventoryServer/GridInventoryService.cs +++ b/OpenSim/Grid/InventoryServer/GridInventoryService.cs @@ -43,7 +43,14 @@ namespace OpenSim.Grid.InventoryServer { } - private bool TryGetUsersInventory(LLUUID userID, out List folderList, + /// + /// Get a user's inventory. + /// + /// + /// + /// + /// true if the inventory was retrieved, false otherwise + private bool GetUsersInventory(LLUUID userID, out List folderList, out List itemsList) { List allFolders = GetInventorySkeleton(userID); @@ -93,22 +100,39 @@ namespace OpenSim.Grid.InventoryServer /// Return a user's entire inventory /// /// - /// + /// The user's inventory. If an inventory cannot be found then an empty collection is returned. public InventoryCollection GetUserInventory(Guid rawUserID) { LLUUID userID = new LLUUID(rawUserID); - m_log.Info("[AGENT INVENTORY]: Processing request for inventory of " + userID.ToString()); + m_log.InfoFormat("[AGENT INVENTORY]: Processing request for inventory of {0}", userID); InventoryCollection invCollection = new InventoryCollection(); - List folders; - List allItems; - if (TryGetUsersInventory(userID, out folders, out allItems)) + + List allFolders = GetInventorySkeleton(userID); + + if (null == allFolders) + { + m_log.WarnFormat("[AGENT INVENTORY]: No inventory found for user {0}", rawUserID); + + return invCollection; + } + + List allItems = new List(); + + foreach (InventoryFolderBase folder in allFolders) { - invCollection.AllItems = allItems; - invCollection.Folders = folders; - invCollection.UserID = userID; + List items = RequestFolderItems(folder.ID); + + if (items != null) + { + allItems.InsertRange(0, items); + } } + + invCollection.AllItems = allItems; + invCollection.Folders = allFolders; + invCollection.UserID = userID; // foreach (InventoryFolderBase folder in folders) // { -- cgit v1.1