From 2270b252656146d9d74b84665a7ace6c3139db30 Mon Sep 17 00:00:00 2001 From: Mike Mazur Date: Thu, 31 Jul 2008 09:24:28 +0000 Subject: Thanks, sempuki, for a patch that moves all Grid Server's plugins to PluginLoader. Fix issue 1871. --- OpenSim/Grid/AssetServer/Main.cs | 37 ++++++++++--------------------------- 1 file changed, 10 insertions(+), 27 deletions(-) (limited to 'OpenSim/Grid/AssetServer/Main.cs') diff --git a/OpenSim/Grid/AssetServer/Main.cs b/OpenSim/Grid/AssetServer/Main.cs index 7053f72..7c7e39b 100644 --- a/OpenSim/Grid/AssetServer/Main.cs +++ b/OpenSim/Grid/AssetServer/Main.cs @@ -53,7 +53,7 @@ namespace OpenSim.Grid.AssetServer // Temporarily hardcoded - should be a plugin protected IAssetLoader assetLoader = new AssetLoaderFileSystem(); - private IAssetProvider m_assetProvider; + private IAssetProviderPlugin m_assetProvider; [STAThread] public static void Main(string[] args) @@ -116,36 +116,19 @@ namespace OpenSim.Grid.AssetServer return null; } - public IAssetProvider LoadDatabasePlugin(string FileName, string connect) + public IAssetProviderPlugin LoadDatabasePlugin(string provider, string connect) { - m_log.Info("[ASSET SERVER]: LoadDatabasePlugin: Attempting to load " + FileName); - Assembly pluginAssembly = Assembly.LoadFrom(FileName); - IAssetProvider assetPlugin = null; - foreach (Type pluginType in pluginAssembly.GetTypes()) - { - if (!pluginType.IsAbstract) - { - Type typeInterface = pluginType.GetInterface("IAssetProvider", true); + PluginLoader loader = + new PluginLoader (new AssetDataInitialiser (connect)); - if (typeInterface != null) - { - IAssetProvider plug = - (IAssetProvider) Activator.CreateInstance(pluginAssembly.GetType(pluginType.ToString())); - assetPlugin = plug; - assetPlugin.Initialise(connect); + // loader will try to load all providers (MySQL, MSSQL, etc) + // unless it is constrainted to the correct "Provider" entry in the addin.xml + loader.Add ("/OpenSim/AssetData", new PluginProviderFilter (provider)); + loader.Load(); - m_log.Info("[ASSET SERVER]: Added " + assetPlugin.Name + " " + assetPlugin.Version); - break; - } - - typeInterface = null; - } - } - - pluginAssembly = null; - return assetPlugin; + return loader.Plugin; } - + public void setupDB(AssetConfig config) { try -- cgit v1.1