From 138bcf6fffdb16e3962c03f995aff7cda15a7800 Mon Sep 17 00:00:00 2001 From: Justin Clarke Casey Date: Fri, 17 Oct 2008 16:44:05 +0000 Subject: * 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. --- OpenSim/Framework/PluginLoader.cs | 37 +++++++++++++++++++++++++++++++------ 1 file changed, 31 insertions(+), 6 deletions(-) (limited to 'OpenSim/Framework/PluginLoader.cs') 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 } /// - /// Filters out which plugin to load based on its "Provider", which is name given by in the addin.xml + /// Filters out which plugin to load based on its the plugin name or names given. Plugin names are contained in + /// their addin.xml /// public class PluginProviderFilter : IPluginFilter { - private string provider; - - public PluginProviderFilter (string p) + private string[] m_filters; + + /// + /// Constructor. + /// + /// + /// Plugin name or names on which to filter. Multiple names should be separated by commas. + /// + public PluginProviderFilter(string p) { - provider = p; + m_filters = p.Split(','); + + for (int i = 0; i < m_filters.Length; i++) + { + m_filters[i] = m_filters[i].Trim(); + } } + /// + /// Apply this filter to the given plugin. + /// + /// + /// true if the plugin's name matched one of the filters, false otherwise. public bool Apply (PluginExtensionNode plugin) { - return (plugin.Provider == provider); + for (int i = 0; i < m_filters.Length; i++) + { + if (m_filters[i] == plugin.Provider) + { + return true; + } + } + + return false; } } } -- cgit v1.1