aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Framework/Communications
diff options
context:
space:
mode:
Diffstat (limited to 'OpenSim/Framework/Communications')
-rw-r--r--OpenSim/Framework/Communications/IInventoryServices.cs35
-rw-r--r--OpenSim/Framework/Communications/InventoryServiceBase.cs146
2 files changed, 99 insertions, 82 deletions
diff --git a/OpenSim/Framework/Communications/IInventoryServices.cs b/OpenSim/Framework/Communications/IInventoryServices.cs
index 15a2f02..ddb19ba 100644
--- a/OpenSim/Framework/Communications/IInventoryServices.cs
+++ b/OpenSim/Framework/Communications/IInventoryServices.cs
@@ -36,19 +36,54 @@ namespace OpenSim.Framework.Communications
36 36
37 public delegate void InventoryItemInfo(LLUUID userID, InventoryItemBase itemInfo); 37 public delegate void InventoryItemInfo(LLUUID userID, InventoryItemBase itemInfo);
38 38
39 /// <summary>
40 /// Defines all the operations one can perform on a user's inventory.
41 /// </summary>
39 public interface IInventoryServices 42 public interface IInventoryServices
40 { 43 {
41 void RequestInventoryForUser(LLUUID userID, InventoryFolderInfo folderCallBack, InventoryItemInfo itemCallBack); 44 void RequestInventoryForUser(LLUUID userID, InventoryFolderInfo folderCallBack, InventoryItemInfo itemCallBack);
45
46 /// <summary>
47 /// Add a new folder to the given user's inventory
48 /// </summary>
49 /// <param name="userID"></param>
50 /// <param name="folder"></param>
42 void AddNewInventoryFolder(LLUUID userID, InventoryFolderBase folder); 51 void AddNewInventoryFolder(LLUUID userID, InventoryFolderBase folder);
52
43 void MoveInventoryFolder(LLUUID userID, InventoryFolderBase folder); 53 void MoveInventoryFolder(LLUUID userID, InventoryFolderBase folder);
54
55 /// <summary>
56 /// Add a new item to the given user's inventory
57 /// </summary>
58 /// <param name="userID"></param>
59 /// <param name="item"></param>
44 void AddNewInventoryItem(LLUUID userID, InventoryItemBase item); 60 void AddNewInventoryItem(LLUUID userID, InventoryItemBase item);
61
62 /// <summary>
63 /// Delete an item from the given user's inventory
64 /// </summary>
65 /// <param name="userID"></param>
66 /// <param name="item"></param>
45 void DeleteInventoryItem(LLUUID userID, InventoryItemBase item); 67 void DeleteInventoryItem(LLUUID userID, InventoryItemBase item);
68
69 /// <summary>
70 /// Create a new inventory for the given user
71 /// </summary>
72 /// <param name="user"></param>
46 void CreateNewUserInventory(LLUUID user); 73 void CreateNewUserInventory(LLUUID user);
74
47 bool HasInventoryForUser(LLUUID userID); 75 bool HasInventoryForUser(LLUUID userID);
76
77 /// <summary>
78 /// Retrieve the root inventory folder for the given user.
79 /// </summary>
80 /// <param name="userID"></param>
81 /// <returns>null if no root folder was found</returns>
48 InventoryFolderBase RequestRootFolder(LLUUID userID); 82 InventoryFolderBase RequestRootFolder(LLUUID userID);
49 83
50 /// <summary> 84 /// <summary>
51 /// Returns the root folder plus any folders in root (so down one level in the Inventory folders tree) 85 /// Returns the root folder plus any folders in root (so down one level in the Inventory folders tree)
86 /// for the given user.
52 /// </summary> 87 /// </summary>
53 /// <param name="userID"></param> 88 /// <param name="userID"></param>
54 /// <returns></returns> 89 /// <returns></returns>
diff --git a/OpenSim/Framework/Communications/InventoryServiceBase.cs b/OpenSim/Framework/Communications/InventoryServiceBase.cs
index 897aa9a..fd9ab1b 100644
--- a/OpenSim/Framework/Communications/InventoryServiceBase.cs
+++ b/OpenSim/Framework/Communications/InventoryServiceBase.cs
@@ -36,16 +36,13 @@ namespace OpenSim.Framework.Communications
36{ 36{
37 public abstract class InventoryServiceBase : IInventoryServices 37 public abstract class InventoryServiceBase : IInventoryServices
38 { 38 {
39 private static readonly log4net.ILog m_log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); 39 private static readonly log4net.ILog m_log
40 = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
40 41
41 protected Dictionary<string, IInventoryData> m_plugins = new Dictionary<string, IInventoryData>(); 42 protected Dictionary<string, IInventoryData> m_plugins = new Dictionary<string, IInventoryData>();
42 //protected IAssetServer m_assetServer;
43
44 public InventoryServiceBase()
45 {
46 //m_assetServer = assetServer;
47 }
48 43
44 #region Plugin methods
45
49 /// <summary> 46 /// <summary>
50 /// Adds a new user server plugin - plugins will be requested in the order they were loaded. 47 /// Adds a new user server plugin - plugins will be requested in the order they were loaded.
51 /// </summary> 48 /// </summary>
@@ -75,18 +72,19 @@ namespace OpenSim.Framework.Communications
75 } 72 }
76 } 73 }
77 } 74 }
75
76 #endregion
77
78 #region IInventoryServices methods
78 79
80 // See IInventoryServices
79 public List<InventoryFolderBase> RequestFirstLevelFolders(Guid rawUserID) 81 public List<InventoryFolderBase> RequestFirstLevelFolders(Guid rawUserID)
80 { 82 {
81 LLUUID userID = new LLUUID(rawUserID); 83 LLUUID userID = new LLUUID(rawUserID);
82 return RequestFirstLevelFolders(userID); 84 return RequestFirstLevelFolders(userID);
83 } 85 }
84 86
85 /// <summary> 87 // See IInventoryServices
86 /// Returns the root folder plus any folders in root (so down one level in the Inventory folders tree)
87 /// </summary>
88 /// <param name="userID"></param>
89 /// <returns></returns>
90 public List<InventoryFolderBase> RequestFirstLevelFolders(LLUUID userID) 88 public List<InventoryFolderBase> RequestFirstLevelFolders(LLUUID userID)
91 { 89 {
92 List<InventoryFolderBase> inventoryList = new List<InventoryFolderBase>(); 90 List<InventoryFolderBase> inventoryList = new List<InventoryFolderBase>();
@@ -112,11 +110,7 @@ namespace OpenSim.Framework.Communications
112 return inventoryList; 110 return inventoryList;
113 } 111 }
114 112
115 /// <summary> 113 // See IInventoryServices
116 /// Get the root folder for a user
117 /// </summary>
118 /// <param name="userID"></param>
119 /// <returns>null if no root folder was found</returns>
120 public InventoryFolderBase RequestUsersRoot(LLUUID userID) 114 public InventoryFolderBase RequestUsersRoot(LLUUID userID)
121 { 115 {
122 foreach (KeyValuePair<string, IInventoryData> plugin in m_plugins) 116 foreach (KeyValuePair<string, IInventoryData> plugin in m_plugins)
@@ -126,9 +120,7 @@ namespace OpenSim.Framework.Communications
126 return null; 120 return null;
127 } 121 }
128 122
129 /// <summary> 123 // See IInventoryServices
130 ///
131 /// </summary>
132 public void MoveInventoryFolder(LLUUID userID, InventoryFolderBase folder) 124 public void MoveInventoryFolder(LLUUID userID, InventoryFolderBase folder)
133 { 125 {
134 foreach (KeyValuePair<string, IInventoryData> plugin in m_plugins) 126 foreach (KeyValuePair<string, IInventoryData> plugin in m_plugins)
@@ -136,12 +128,49 @@ namespace OpenSim.Framework.Communications
136 plugin.Value.moveInventoryFolder(folder); 128 plugin.Value.moveInventoryFolder(folder);
137 } 129 }
138 } 130 }
131
132 public virtual bool HasInventoryForUser(LLUUID userID)
133 {
134 return false;
135 }
136
137 // See IInventoryServices
138 public InventoryFolderBase RequestRootFolder(LLUUID userID)
139 {
140 return RequestUsersRoot(userID);
141 }
142
143 // See IInventoryServices
144 public void CreateNewUserInventory(LLUUID user)
145 {
146 InventoryFolderBase existingRootFolder = RequestUsersRoot(user);
147
148 if (null != existingRootFolder)
149 {
150 m_log.Error(
151 String.Format("[AGENTINVENTORY]: " +
152 "Did not create a new inventory for user {0} since they already have "
153 + "a root inventory folder with id {1}", user, existingRootFolder));
154 }
155 else
156 {
157 UsersInventory inven = new UsersInventory();
158 inven.CreateNewInventorySet(user);
159 AddNewInventorySet(inven);
160 }
161 }
162
163 public abstract void RequestInventoryForUser(LLUUID userID, InventoryFolderInfo folderCallBack,
164 InventoryItemInfo itemCallBack);
165 public abstract void AddNewInventoryFolder(LLUUID userID, InventoryFolderBase folder);
166 public abstract void MoveExistingInventoryFolder(InventoryFolderBase folder);
167 public abstract void AddNewInventoryItem(LLUUID userID, InventoryItemBase item);
168 public abstract void DeleteInventoryItem(LLUUID userID, InventoryItemBase item);
169
170 #endregion
171
172 #region Methods used by GridInventoryService
139 173
140 /// <summary>
141 ///
142 /// </summary>
143 /// <param name="parentFolderID"></param>
144 /// <returns></returns>
145 public List<InventoryFolderBase> RequestSubFolders(LLUUID parentFolderID) 174 public List<InventoryFolderBase> RequestSubFolders(LLUUID parentFolderID)
146 { 175 {
147 List<InventoryFolderBase> inventoryList = new List<InventoryFolderBase>(); 176 List<InventoryFolderBase> inventoryList = new List<InventoryFolderBase>();
@@ -162,8 +191,10 @@ namespace OpenSim.Framework.Communications
162 } 191 }
163 return itemsList; 192 return itemsList;
164 } 193 }
194
195 #endregion
165 196
166 public void AddFolder(InventoryFolderBase folder) 197 protected void AddFolder(InventoryFolderBase folder)
167 { 198 {
168 foreach (KeyValuePair<string, IInventoryData> plugin in m_plugins) 199 foreach (KeyValuePair<string, IInventoryData> plugin in m_plugins)
169 { 200 {
@@ -171,7 +202,7 @@ namespace OpenSim.Framework.Communications
171 } 202 }
172 } 203 }
173 204
174 public void MoveFolder(InventoryFolderBase folder) 205 protected void MoveFolder(InventoryFolderBase folder)
175 { 206 {
176 foreach (KeyValuePair<string, IInventoryData> plugin in m_plugins) 207 foreach (KeyValuePair<string, IInventoryData> plugin in m_plugins)
177 { 208 {
@@ -179,7 +210,7 @@ namespace OpenSim.Framework.Communications
179 } 210 }
180 } 211 }
181 212
182 public void AddItem(InventoryItemBase item) 213 protected void AddItem(InventoryItemBase item)
183 { 214 {
184 foreach (KeyValuePair<string, IInventoryData> plugin in m_plugins) 215 foreach (KeyValuePair<string, IInventoryData> plugin in m_plugins)
185 { 216 {
@@ -187,68 +218,27 @@ namespace OpenSim.Framework.Communications
187 } 218 }
188 } 219 }
189 220
190 public void DeleteItem(InventoryItemBase item) 221 protected void DeleteItem(InventoryItemBase item)
191 { 222 {
192 foreach (KeyValuePair<string, IInventoryData> plugin in m_plugins) 223 foreach (KeyValuePair<string, IInventoryData> plugin in m_plugins)
193 { 224 {
194 plugin.Value.deleteInventoryItem(item.inventoryID); 225 plugin.Value.deleteInventoryItem(item.inventoryID);
195 } 226 }
196 } 227 }
197 228
198 public virtual bool HasInventoryForUser(LLUUID userID) 229 private void AddNewInventorySet(UsersInventory inventory)
199 {
200 return false;
201 }
202
203 public InventoryFolderBase RequestRootFolder(LLUUID userID)
204 {
205 return RequestUsersRoot(userID);
206 }
207
208 /// <summary>
209 ///
210 /// </summary>
211 /// <param name="inventory"></param>
212 public void AddNewInventorySet(UsersInventory inventory)
213 { 230 {
214 foreach (InventoryFolderBase folder in inventory.Folders.Values) 231 foreach (InventoryFolderBase folder in inventory.Folders.Values)
215 { 232 {
216 AddFolder(folder); 233 AddFolder(folder);
217 } 234 }
218 } 235 }
219
220 /// <summary>
221 /// Create a new set of inventory folders for the given user.
222 /// </summary>
223 /// <param name="user"></param>
224 public void CreateNewUserInventory(LLUUID user)
225 {
226 InventoryFolderBase existingRootFolder = RequestUsersRoot(user);
227
228 if (null != existingRootFolder)
229 {
230 m_log.Error(
231 String.Format("[AGENTINVENTORY]: " +
232 "Did not create a new inventory for user {0} since they already have "
233 + "a root inventory folder with id {1}", user, existingRootFolder));
234 }
235 else
236 {
237 UsersInventory inven = new UsersInventory();
238 inven.CreateNewInventorySet(user);
239 AddNewInventorySet(inven);
240 }
241 }
242 236
243 public class UsersInventory 237 private class UsersInventory
244 { 238 {
245 public Dictionary<LLUUID, InventoryFolderBase> Folders = new Dictionary<LLUUID, InventoryFolderBase>(); 239 public Dictionary<LLUUID, InventoryFolderBase> Folders = new Dictionary<LLUUID, InventoryFolderBase>();
246 public Dictionary<LLUUID, InventoryItemBase> Items = new Dictionary<LLUUID, InventoryItemBase>(); 240 public Dictionary<LLUUID, InventoryItemBase> Items = new Dictionary<LLUUID, InventoryItemBase>();
247 241
248 public UsersInventory()
249 {
250 }
251
252 public virtual void CreateNewInventorySet(LLUUID user) 242 public virtual void CreateNewInventorySet(LLUUID user)
253 { 243 {
254 InventoryFolderBase folder = new InventoryFolderBase(); 244 InventoryFolderBase folder = new InventoryFolderBase();
@@ -390,13 +380,5 @@ namespace OpenSim.Framework.Communications
390 Folders.Add(folder.folderID, folder); 380 Folders.Add(folder.folderID, folder);
391 } 381 }
392 } 382 }
393
394 public abstract void RequestInventoryForUser(LLUUID userID, InventoryFolderInfo folderCallBack,
395 InventoryItemInfo itemCallBack);
396
397 public abstract void AddNewInventoryFolder(LLUUID userID, InventoryFolderBase folder);
398 public abstract void MoveExistingInventoryFolder(InventoryFolderBase folder);
399 public abstract void AddNewInventoryItem(LLUUID userID, InventoryItemBase item);
400 public abstract void DeleteInventoryItem(LLUUID userID, InventoryItemBase item);
401 } 383 }
402} \ No newline at end of file 384} \ No newline at end of file