diff options
Diffstat (limited to '')
3 files changed, 39 insertions, 25 deletions
diff --git a/OpenSim/Framework/Communications/Cache/CachedUserInfo.cs b/OpenSim/Framework/Communications/Cache/CachedUserInfo.cs index d850305..fc2f948 100644 --- a/OpenSim/Framework/Communications/Cache/CachedUserInfo.cs +++ b/OpenSim/Framework/Communications/Cache/CachedUserInfo.cs | |||
@@ -41,8 +41,8 @@ namespace OpenSim.Framework.Communications.Caches | |||
41 | public class CachedUserInfo | 41 | public class CachedUserInfo |
42 | { | 42 | { |
43 | // Fields | 43 | // Fields |
44 | public InventoryFolder RootFolder; | 44 | public InventoryFolder RootFolder = null; |
45 | public UserProfileData UserProfile; | 45 | public UserProfileData UserProfile = null; |
46 | 46 | ||
47 | // Methods | 47 | // Methods |
48 | public void FolderReceive(LLUUID userID, InventoryFolder folderInfo) | 48 | public void FolderReceive(LLUUID userID, InventoryFolder folderInfo) |
diff --git a/OpenSim/Framework/Communications/Cache/UserProfileCache.cs b/OpenSim/Framework/Communications/Cache/UserProfileCache.cs index 2271550..e65b6b2 100644 --- a/OpenSim/Framework/Communications/Cache/UserProfileCache.cs +++ b/OpenSim/Framework/Communications/Cache/UserProfileCache.cs | |||
@@ -98,17 +98,24 @@ namespace OpenSim.Framework.Communications.Caches | |||
98 | { | 98 | { |
99 | if (this.UserProfiles.ContainsKey(remoteClient.AgentId)) | 99 | if (this.UserProfiles.ContainsKey(remoteClient.AgentId)) |
100 | { | 100 | { |
101 | CachedUserInfo info = this.UserProfiles[remoteClient.AgentId]; | 101 | if (this.UserProfiles[remoteClient.AgentId].RootFolder != null) |
102 | if (info.RootFolder.folderID == parentID) | ||
103 | { | 102 | { |
104 | info.RootFolder.CreateNewSubFolder(folderID, folderName, folderType); | 103 | CachedUserInfo info = this.UserProfiles[remoteClient.AgentId]; |
105 | } | 104 | if (info.RootFolder.folderID == parentID) |
106 | else | 105 | { |
107 | { | 106 | InventoryFolder createdFolder = info.RootFolder.CreateNewSubFolder(folderID, folderName, folderType); |
108 | InventoryFolder folder = info.RootFolder.HasSubFolder(parentID); | 107 | if (createdFolder != null) |
109 | if (folder != null) | 108 | { |
109 | this.m_parent.InventoryServer.AddNewInventoryFolder(remoteClient.AgentId, createdFolder); | ||
110 | } | ||
111 | } | ||
112 | else | ||
110 | { | 113 | { |
111 | folder.CreateNewSubFolder(folderID, folderName, folderType); | 114 | InventoryFolder folder = info.RootFolder.HasSubFolder(parentID); |
115 | if (folder != null) | ||
116 | { | ||
117 | folder.CreateNewSubFolder(folderID, folderName, folderType); | ||
118 | } | ||
112 | } | 119 | } |
113 | } | 120 | } |
114 | } | 121 | } |
@@ -127,20 +134,23 @@ namespace OpenSim.Framework.Communications.Caches | |||
127 | } | 134 | } |
128 | else if (this.UserProfiles.ContainsKey(remoteClient.AgentId)) | 135 | else if (this.UserProfiles.ContainsKey(remoteClient.AgentId)) |
129 | { | 136 | { |
130 | CachedUserInfo info = this.UserProfiles[remoteClient.AgentId]; | 137 | if (this.UserProfiles[remoteClient.AgentId].RootFolder != null) |
131 | if (info.RootFolder.folderID == folderID) | ||
132 | { | 138 | { |
133 | if (fetchItems) | 139 | CachedUserInfo info = this.UserProfiles[remoteClient.AgentId]; |
140 | if (info.RootFolder.folderID == folderID) | ||
134 | { | 141 | { |
135 | remoteClient.SendInventoryFolderDetails(remoteClient.AgentId, folderID, info.RootFolder.RequestListOfItems()); | 142 | if (fetchItems) |
143 | { | ||
144 | remoteClient.SendInventoryFolderDetails(remoteClient.AgentId, folderID, info.RootFolder.RequestListOfItems()); | ||
145 | } | ||
136 | } | 146 | } |
137 | } | 147 | else |
138 | else | ||
139 | { | ||
140 | InventoryFolder folder = info.RootFolder.HasSubFolder(folderID); | ||
141 | if ((folder != null) && fetchItems) | ||
142 | { | 148 | { |
143 | remoteClient.SendInventoryFolderDetails(remoteClient.AgentId, folderID, folder.RequestListOfItems()); | 149 | InventoryFolder folder = info.RootFolder.HasSubFolder(folderID); |
150 | if ((folder != null) && fetchItems) | ||
151 | { | ||
152 | remoteClient.SendInventoryFolderDetails(remoteClient.AgentId, folderID, folder.RequestListOfItems()); | ||
153 | } | ||
144 | } | 154 | } |
145 | } | 155 | } |
146 | } | 156 | } |
@@ -154,10 +164,13 @@ namespace OpenSim.Framework.Communications.Caches | |||
154 | } | 164 | } |
155 | else if (this.UserProfiles.ContainsKey(remoteClient.AgentId)) | 165 | else if (this.UserProfiles.ContainsKey(remoteClient.AgentId)) |
156 | { | 166 | { |
157 | InventoryItemBase item = this.UserProfiles[remoteClient.AgentId].RootFolder.HasItem(itemID); | 167 | if (this.UserProfiles[remoteClient.AgentId].RootFolder != null) |
158 | if (item != null) | ||
159 | { | 168 | { |
160 | remoteClient.SendInventoryItemDetails(ownerID, item); | 169 | InventoryItemBase item = this.UserProfiles[remoteClient.AgentId].RootFolder.HasItem(itemID); |
170 | if (item != null) | ||
171 | { | ||
172 | remoteClient.SendInventoryItemDetails(ownerID, item); | ||
173 | } | ||
161 | } | 174 | } |
162 | } | 175 | } |
163 | } | 176 | } |
@@ -168,7 +181,7 @@ namespace OpenSim.Framework.Communications.Caches | |||
168 | /// <param name="userID"></param> | 181 | /// <param name="userID"></param> |
169 | private void RequestInventoryForUser(LLUUID userID, CachedUserInfo userInfo) | 182 | private void RequestInventoryForUser(LLUUID userID, CachedUserInfo userInfo) |
170 | { | 183 | { |
171 | //this.m_parent.InventoryServer.RequestInventoryForUser(userID, userInfo.FolderReceive, userInfo.ItemReceive); | 184 | this.m_parent.InventoryServer.RequestInventoryForUser(userID, userInfo.FolderReceive, userInfo.ItemReceive); |
172 | 185 | ||
173 | //for now we manually create the root folder, | 186 | //for now we manually create the root folder, |
174 | // but should be requesting all inventory from inventory server. | 187 | // but should be requesting all inventory from inventory server. |
diff --git a/OpenSim/Framework/Communications/IInventoryServices.cs b/OpenSim/Framework/Communications/IInventoryServices.cs index b78cba1..777dbe2 100644 --- a/OpenSim/Framework/Communications/IInventoryServices.cs +++ b/OpenSim/Framework/Communications/IInventoryServices.cs | |||
@@ -14,5 +14,6 @@ namespace OpenSim.Framework.Communications | |||
14 | public interface IInventoryServices | 14 | public interface IInventoryServices |
15 | { | 15 | { |
16 | void RequestInventoryForUser(LLUUID userID, InventoryFolderInfo folderCallBack, InventoryItemInfo itemCallBack); | 16 | void RequestInventoryForUser(LLUUID userID, InventoryFolderInfo folderCallBack, InventoryItemInfo itemCallBack); |
17 | void AddNewInventoryFolder(LLUUID userID, InventoryFolder folder); | ||
17 | } | 18 | } |
18 | } | 19 | } |