From 4b7782127522c8c968831ef1c05e5cc30e592ffd Mon Sep 17 00:00:00 2001 From: Sean Dague Date: Wed, 5 Dec 2007 19:00:29 +0000 Subject: From Justin Casey (IBM) When using a local inventory service, this patch stops items held in the root 'my inventory' folder from 'disappearing' on server restart. They were actually still there, we just weren't retrieving them. >From looking at the grid inventory server, the bug probably still exists in there. But I wanted to get this patch in first and consult with MW about the grid fix (he may be planning to change the area extensively soon). --- .../Communications/Local/LocalInventoryService.cs | 40 +++++++++++++--------- 1 file changed, 24 insertions(+), 16 deletions(-) (limited to 'OpenSim/Region/Communications/Local/LocalInventoryService.cs') diff --git a/OpenSim/Region/Communications/Local/LocalInventoryService.cs b/OpenSim/Region/Communications/Local/LocalInventoryService.cs index 40e6601..e82d267 100644 --- a/OpenSim/Region/Communications/Local/LocalInventoryService.cs +++ b/OpenSim/Region/Communications/Local/LocalInventoryService.cs @@ -36,10 +36,6 @@ namespace OpenSim.Region.Communications.Local { public class LocalInventoryService : InventoryServiceBase { - public LocalInventoryService() - { - } - public override void RequestInventoryForUser(LLUUID userID, InventoryFolderInfo folderCallBack, InventoryItemInfo itemCallBack) { @@ -51,9 +47,7 @@ namespace OpenSim.Region.Communications.Local { if (folder.parentID == LLUUID.Zero) { - InventoryFolderImpl newfolder = new InventoryFolderImpl(folder); - rootFolder = newfolder; - folderCallBack(userID, newfolder); + rootFolder = RequestInventoryFolder(userID, folder, folderCallBack, itemCallBack); } } @@ -63,14 +57,7 @@ namespace OpenSim.Region.Communications.Local { if (folder.folderID != rootFolder.folderID) { - InventoryFolderImpl newfolder = new InventoryFolderImpl(folder); - folderCallBack(userID, newfolder); - - List items = RequestFolderItems(newfolder.folderID); - foreach (InventoryItemBase item in items) - { - itemCallBack(userID, item); - } + RequestInventoryFolder(userID, folder, folderCallBack, itemCallBack); } } } @@ -90,5 +77,26 @@ namespace OpenSim.Region.Communications.Local { DeleteItem(item); } + + /// + /// Send the given inventory folder and its item contents back to the requester. + /// + /// + /// + private InventoryFolderImpl RequestInventoryFolder(LLUUID userID, InventoryFolderBase folder, + InventoryFolderInfo folderCallBack, + InventoryItemInfo itemCallBack) + { + InventoryFolderImpl newFolder = new InventoryFolderImpl(folder); + folderCallBack(userID, newFolder); + + List items = RequestFolderItems(newFolder.folderID); + foreach (InventoryItemBase item in items) + { + itemCallBack(userID, item); + } + + return newFolder; + } } -} \ No newline at end of file +} -- cgit v1.1