aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Framework
diff options
context:
space:
mode:
authorJustin Clarke Casey2008-10-17 16:44:05 +0000
committerJustin Clarke Casey2008-10-17 16:44:05 +0000
commit138bcf6fffdb16e3962c03f995aff7cda15a7800 (patch)
tree0e229194378b71199b999fc126b3775b53f500ff /OpenSim/Framework
parent* Adds a lot of stability and performance to the physics engine. The avata... (diff)
downloadopensim-SC-138bcf6fffdb16e3962c03f995aff7cda15a7800.zip
opensim-SC-138bcf6fffdb16e3962c03f995aff7cda15a7800.tar.gz
opensim-SC-138bcf6fffdb16e3962c03f995aff7cda15a7800.tar.bz2
opensim-SC-138bcf6fffdb16e3962c03f995aff7cda15a7800.tar.xz
* Apply a modified version of http://opensimulator.org/mantis/view.php?id=2290
* This allows multiple user profile providers to be specified in OpenSim.ini separated by commas * If multiple providers are specified then a request for a user profile will query each in turn until the profile is either found or all have been queried * Unfortunately I don't believe this order can currently be specified, which if true is something that will need to be fixed. * Thanks to smeans for the original patch.
Diffstat (limited to '')
-rw-r--r--OpenSim/Framework/Communications/UserManagerBase.cs20
-rw-r--r--OpenSim/Framework/PluginLoader.cs37
2 files changed, 46 insertions, 11 deletions
diff --git a/OpenSim/Framework/Communications/UserManagerBase.cs b/OpenSim/Framework/Communications/UserManagerBase.cs
index aa68367..32bfed7 100644
--- a/OpenSim/Framework/Communications/UserManagerBase.cs
+++ b/OpenSim/Framework/Communications/UserManagerBase.cs
@@ -56,11 +56,11 @@ namespace OpenSim.Framework.Communications
56 public void AddPlugin(string provider, string connect) 56 public void AddPlugin(string provider, string connect)
57 { 57 {
58 PluginLoader<IUserDataPlugin> loader = 58 PluginLoader<IUserDataPlugin> loader =
59 new PluginLoader<IUserDataPlugin> (new UserDataInitialiser (connect)); 59 new PluginLoader<IUserDataPlugin>(new UserDataInitialiser(connect));
60 60
61 // loader will try to load all providers (MySQL, MSSQL, etc) 61 // loader will try to load all providers (MySQL, MSSQL, etc)
62 // unless it is constrainted to the correct "Provider" entry in the addin.xml 62 // unless it is constrainted to the correct "Provider" entry in the addin.xml
63 loader.Add ("/OpenSim/UserData", new PluginProviderFilter (provider)); 63 loader.Add("/OpenSim/UserData", new PluginProviderFilter(provider));
64 loader.Load(); 64 loader.Load();
65 65
66 _plugins = loader.Plugins; 66 _plugins = loader.Plugins;
@@ -178,7 +178,12 @@ namespace OpenSim.Framework.Communications
178 { 178 {
179 try 179 try
180 { 180 {
181 return plugin.GetAgentByUUID(uuid); 181 UserAgentData result = plugin.GetAgentByUUID(uuid);
182
183 if (result != null)
184 {
185 return result;
186 }
182 } 187 }
183 catch (Exception e) 188 catch (Exception e)
184 { 189 {
@@ -260,7 +265,12 @@ namespace OpenSim.Framework.Communications
260 { 265 {
261 try 266 try
262 { 267 {
263 return plugin.GetUserFriendList(ownerID); 268 List<FriendListItem> result = plugin.GetUserFriendList(ownerID);
269
270 if (result != null)
271 {
272 return result;
273 }
264 } 274 }
265 catch (Exception e) 275 catch (Exception e)
266 { 276 {
@@ -331,7 +341,6 @@ namespace OpenSim.Framework.Communications
331 } 341 }
332 } 342 }
333 343
334
335 /// <summary> 344 /// <summary>
336 /// Resets the currentAgent in the user profile 345 /// Resets the currentAgent in the user profile
337 /// </summary> 346 /// </summary>
@@ -344,6 +353,7 @@ namespace OpenSim.Framework.Communications
344 { 353 {
345 return; 354 return;
346 } 355 }
356
347 profile.CurrentAgent = null; 357 profile.CurrentAgent = null;
348 358
349 UpdateUserProfile(profile); 359 UpdateUserProfile(profile);
diff --git a/OpenSim/Framework/PluginLoader.cs b/OpenSim/Framework/PluginLoader.cs
index ab4e217..a39f787 100644
--- a/OpenSim/Framework/PluginLoader.cs
+++ b/OpenSim/Framework/PluginLoader.cs
@@ -342,20 +342,45 @@ namespace OpenSim.Framework
342 } 342 }
343 343
344 /// <summary> 344 /// <summary>
345 /// Filters out which plugin to load based on its "Provider", which is name given by in the addin.xml 345 /// Filters out which plugin to load based on its the plugin name or names given. Plugin names are contained in
346 /// their addin.xml
346 /// </summary> 347 /// </summary>
347 public class PluginProviderFilter : IPluginFilter 348 public class PluginProviderFilter : IPluginFilter
348 { 349 {
349 private string provider; 350 private string[] m_filters;
350 351
351 public PluginProviderFilter (string p) 352 /// <summary>
353 /// Constructor.
354 /// </summary>
355 /// <param name="p">
356 /// Plugin name or names on which to filter. Multiple names should be separated by commas.
357 /// </param>
358 public PluginProviderFilter(string p)
352 { 359 {
353 provider = p; 360 m_filters = p.Split(',');
361
362 for (int i = 0; i < m_filters.Length; i++)
363 {
364 m_filters[i] = m_filters[i].Trim();
365 }
354 } 366 }
355 367
368 /// <summary>
369 /// Apply this filter to the given plugin.
370 /// </summary>
371 /// <param name="plugin"></param>
372 /// <returns>true if the plugin's name matched one of the filters, false otherwise.</returns>
356 public bool Apply (PluginExtensionNode plugin) 373 public bool Apply (PluginExtensionNode plugin)
357 { 374 {
358 return (plugin.Provider == provider); 375 for (int i = 0; i < m_filters.Length; i++)
376 {
377 if (m_filters[i] == plugin.Provider)
378 {
379 return true;
380 }
381 }
382
383 return false;
359 } 384 }
360 } 385 }
361} 386}