aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Framework/Communications
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/Framework/Communications
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/Framework/Communications')
-rw-r--r--OpenSim/Framework/Communications/Cache/CachedUserInfo.cs31
1 files changed, 20 insertions, 11 deletions
diff --git a/OpenSim/Framework/Communications/Cache/CachedUserInfo.cs b/OpenSim/Framework/Communications/Cache/CachedUserInfo.cs
index d97cf01..686f8d2 100644
--- a/OpenSim/Framework/Communications/Cache/CachedUserInfo.cs
+++ b/OpenSim/Framework/Communications/Cache/CachedUserInfo.cs
@@ -47,10 +47,18 @@ namespace OpenSim.Framework.Communications.Cache
47 47
48 private UserProfileData m_userProfile; 48 private UserProfileData m_userProfile;
49 public UserProfileData UserProfile { get { return m_userProfile; } } 49 public UserProfileData UserProfile { get { return m_userProfile; } }
50
51
52 private bool m_hasInventory;
53
54 /// <summary>
55 /// Has this user info object yet received its inventory information from the invetnroy service?
56 /// </summary>
57 public bool HasInventory { get { return m_hasInventory; } }
50 58
51 // FIXME: These need to be hidden behind accessors 59 // FIXME: These need to be hidden behind accessors
52 private InventoryFolderImpl m_rootFolder; 60 private InventoryFolderImpl m_rootFolder;
53 public InventoryFolderImpl RootFolder { get { return m_rootFolder; } } 61 public InventoryFolderImpl RootFolder { get { return m_rootFolder; } }
54 62
55 /// <summary> 63 /// <summary>
56 /// Stores received folders for which we have not yet received the parents. 64 /// Stores received folders for which we have not yet received the parents.
@@ -68,11 +76,6 @@ namespace OpenSim.Framework.Communications.Cache
68 m_commsManager = commsManager; 76 m_commsManager = commsManager;
69 m_userProfile = userProfile; 77 m_userProfile = userProfile;
70 } 78 }
71
72 /// <summary>
73 /// Has this user info object yet received its inventory information from the invetnroy service?
74 /// </summary>
75 public bool HasInventory { get { return RootFolder != null; } }
76 79
77 /// <summary> 80 /// <summary>
78 /// Store a folder pending categorization when its parent is received. 81 /// Store a folder pending categorization when its parent is received.
@@ -142,8 +145,10 @@ namespace OpenSim.Framework.Communications.Cache
142 } 145 }
143 catch (Exception e) 146 catch (Exception e)
144 { 147 {
145 m_log.ErrorFormat("[INVENTORY CACHE]: {0}", e); 148 m_log.ErrorFormat("[INVENTORY CACHE]: Error processing inventory received from inventory service, {0}", e);
146 } 149 }
150
151 m_hasInventory = true;
147 } 152 }
148 153
149 /// <summary> 154 /// <summary>
@@ -153,9 +158,9 @@ namespace OpenSim.Framework.Communications.Cache
153 /// <param name="folderInfo"></param> 158 /// <param name="folderInfo"></param>
154 private void FolderReceive(LLUUID userID, InventoryFolderImpl folderInfo) 159 private void FolderReceive(LLUUID userID, InventoryFolderImpl folderInfo)
155 { 160 {
156// m_log.DebugFormat( 161 m_log.DebugFormat(
157// "[INVENTORY CACHE]: Received folder {0} {1} for user {2}", 162 "[INVENTORY CACHE]: Received folder {0} {1} for user {2}",
158// folderInfo.name, folderInfo.folderID, userID); 163 folderInfo.Name, folderInfo.ID, userID);
159 164
160 if (userID == UserProfile.ID) 165 if (userID == UserProfile.ID)
161 { 166 {
@@ -207,6 +212,10 @@ namespace OpenSim.Framework.Communications.Cache
207 /// <param name="folderInfo"></param> 212 /// <param name="folderInfo"></param>
208 private void ItemReceive(LLUUID userID, InventoryItemBase itemInfo) 213 private void ItemReceive(LLUUID userID, InventoryItemBase itemInfo)
209 { 214 {
215 m_log.DebugFormat(
216 "[INVENTORY CACHE]: Received item {0} {1} for user {2}",
217 itemInfo.Name, itemInfo.ID, userID);
218
210 if ((userID == UserProfile.ID) && (RootFolder != null)) 219 if ((userID == UserProfile.ID) && (RootFolder != null))
211 { 220 {
212 if (itemInfo.Folder == RootFolder.ID) 221 if (itemInfo.Folder == RootFolder.ID)