aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/Communications/Local/LocalInventoryService.cs
diff options
context:
space:
mode:
authorJustin Clarke Casey2008-04-11 18:46:54 +0000
committerJustin Clarke Casey2008-04-11 18:46:54 +0000
commit7ac7f79f88f51504680a24f1621115c595492f62 (patch)
treea1b29254a35ca97f4d44dffa1bb4bd2eb863e938 /OpenSim/Region/Communications/Local/LocalInventoryService.cs
parent* Minor inventory code cleanup following on from last patch (diff)
downloadopensim-SC_OLD-7ac7f79f88f51504680a24f1621115c595492f62.zip
opensim-SC_OLD-7ac7f79f88f51504680a24f1621115c595492f62.tar.gz
opensim-SC_OLD-7ac7f79f88f51504680a24f1621115c595492f62.tar.bz2
opensim-SC_OLD-7ac7f79f88f51504680a24f1621115c595492f62.tar.xz
* Eliminate a class of errors where an inventory request could be made before the region had completely received the inventory for the user.
* A much larger race condition where the inventory request could be made before the region gets any data at all will also be fixed in the near future. * This change also fixes a regression from two patches ago where items stopped appearing in standalone inventory
Diffstat (limited to 'OpenSim/Region/Communications/Local/LocalInventoryService.cs')
-rw-r--r--OpenSim/Region/Communications/Local/LocalInventoryService.cs11
1 files changed, 9 insertions, 2 deletions
diff --git a/OpenSim/Region/Communications/Local/LocalInventoryService.cs b/OpenSim/Region/Communications/Local/LocalInventoryService.cs
index e81a39f..dafd637 100644
--- a/OpenSim/Region/Communications/Local/LocalInventoryService.cs
+++ b/OpenSim/Region/Communications/Local/LocalInventoryService.cs
@@ -39,13 +39,18 @@ namespace OpenSim.Region.Communications.Local
39 /// </summary> 39 /// </summary>
40 public class LocalInventoryService : InventoryServiceBase 40 public class LocalInventoryService : InventoryServiceBase
41 { 41 {
42 private static readonly log4net.ILog m_log
43 = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
44
42 public override void RequestInventoryForUser(LLUUID userID, InventoryReceiptCallback callback) 45 public override void RequestInventoryForUser(LLUUID userID, InventoryReceiptCallback callback)
43 { 46 {
47 m_log.InfoFormat("[LOCAL INVENTORY SERVICE]: Requesting inventory for user {0}", userID);
48
44 List<InventoryFolderBase> skeletonFolders = GetInventorySkeleton(userID); 49 List<InventoryFolderBase> skeletonFolders = GetInventorySkeleton(userID);
45 InventoryFolderImpl rootFolder = null; 50 InventoryFolderImpl rootFolder = null;
46 51
47 ICollection<InventoryFolderImpl> folders = new List<InventoryFolderImpl>(); 52 List<InventoryFolderImpl> folders = new List<InventoryFolderImpl>();
48 ICollection<InventoryItemBase> items = new List<InventoryItemBase>(); 53 List<InventoryItemBase> items = new List<InventoryItemBase>();
49 54
50 // Need to retrieve the root folder on the first pass 55 // Need to retrieve the root folder on the first pass
51 foreach (InventoryFolderBase folder in skeletonFolders) 56 foreach (InventoryFolderBase folder in skeletonFolders)
@@ -54,6 +59,7 @@ namespace OpenSim.Region.Communications.Local
54 { 59 {
55 rootFolder = new InventoryFolderImpl(folder); 60 rootFolder = new InventoryFolderImpl(folder);
56 folders.Add(rootFolder); 61 folders.Add(rootFolder);
62 items.AddRange(RequestFolderItems(rootFolder.ID));
57 } 63 }
58 } 64 }
59 65
@@ -64,6 +70,7 @@ namespace OpenSim.Region.Communications.Local
64 if (folder.ID != rootFolder.ID) 70 if (folder.ID != rootFolder.ID)
65 { 71 {
66 folders.Add(new InventoryFolderImpl(folder)); 72 folders.Add(new InventoryFolderImpl(folder));
73 items.AddRange(RequestFolderItems(folder.ID));
67 } 74 }
68 } 75 }
69 } 76 }