diff options
author | Justin Clarke Casey | 2008-04-11 18:46:54 +0000 |
---|---|---|
committer | Justin Clarke Casey | 2008-04-11 18:46:54 +0000 |
commit | 7ac7f79f88f51504680a24f1621115c595492f62 (patch) | |
tree | a1b29254a35ca97f4d44dffa1bb4bd2eb863e938 /OpenSim/Framework/Communications | |
parent | * Minor inventory code cleanup following on from last patch (diff) | |
download | opensim-SC-7ac7f79f88f51504680a24f1621115c595492f62.zip opensim-SC-7ac7f79f88f51504680a24f1621115c595492f62.tar.gz opensim-SC-7ac7f79f88f51504680a24f1621115c595492f62.tar.bz2 opensim-SC-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.cs | 31 |
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) |