From cda526939145d92794eb14554ef43badaf06c149 Mon Sep 17 00:00:00 2001 From: Charles Krinke Date: Fri, 11 Jul 2008 02:04:02 +0000 Subject: Mantis#1682. Revert temporarily, Sempuki's mono addins patch while he studies the issues in Windows a little bit. --- .../LoadRegions/LoadRegionsPlugin.cs | 5 ++ .../RemoteController/RemoteAdminPlugin.cs | 5 ++ .../Rest/Inventory/RestHandler.cs | 7 +++ .../ApplicationPlugins/Rest/Regions/GETHandler.cs | 1 + .../ApplicationPlugins/Rest/Regions/POSTHandler.cs | 1 + .../Rest/Regions/RestRegionPlugin.cs | 6 +++ OpenSim/ApplicationPlugins/Rest/RestPlugin.cs | 6 +++ OpenSim/Framework/PluginLoader.cs | 59 +++++++++------------- OpenSim/Grid/GridServer/GridServerBase.cs | 3 +- OpenSim/Grid/GridServer/IGridPlugin.cs | 4 ++ OpenSim/Region/Application/IApplicationPlugin.cs | 4 ++ OpenSim/Region/Application/OpenSimBase.cs | 4 +- 12 files changed, 67 insertions(+), 38 deletions(-) (limited to 'OpenSim') diff --git a/OpenSim/ApplicationPlugins/LoadRegions/LoadRegionsPlugin.cs b/OpenSim/ApplicationPlugins/LoadRegions/LoadRegionsPlugin.cs index 523f9fc..6743fb4 100644 --- a/OpenSim/ApplicationPlugins/LoadRegions/LoadRegionsPlugin.cs +++ b/OpenSim/ApplicationPlugins/LoadRegions/LoadRegionsPlugin.cs @@ -28,13 +28,18 @@ using System.Reflection; using System.Threading; using log4net; +using Mono.Addins; using Nini.Config; using OpenSim.Framework; using OpenSim.Framework.RegionLoader.Filesystem; using OpenSim.Framework.RegionLoader.Web; +[assembly : Addin] +[assembly : AddinDependency("OpenSim", "0.5")] + namespace OpenSim.ApplicationPlugins.LoadRegions { + [Extension("/OpenSim/Startup")] public class LoadRegionsPlugin : IApplicationPlugin { private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); diff --git a/OpenSim/ApplicationPlugins/RemoteController/RemoteAdminPlugin.cs b/OpenSim/ApplicationPlugins/RemoteController/RemoteAdminPlugin.cs index 767b736..0a58a0a 100644 --- a/OpenSim/ApplicationPlugins/RemoteController/RemoteAdminPlugin.cs +++ b/OpenSim/ApplicationPlugins/RemoteController/RemoteAdminPlugin.cs @@ -33,14 +33,19 @@ using System.Reflection; using System.Timers; using libsecondlife; using log4net; +using Mono.Addins; using Nwc.XmlRpc; using OpenSim.Framework; using OpenSim.Framework.Servers; using OpenSim.Region.Environment.Modules.World.Terrain; using OpenSim.Region.Environment.Scenes; +[assembly : Addin] +[assembly : AddinDependency("OpenSim", "0.5")] + namespace OpenSim.ApplicationPlugins.RemoteController { + [Extension("/OpenSim/Startup")] public class RemoteAdminPlugin : IApplicationPlugin { private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); diff --git a/OpenSim/ApplicationPlugins/Rest/Inventory/RestHandler.cs b/OpenSim/ApplicationPlugins/Rest/Inventory/RestHandler.cs index 1ec3567..c351272 100644 --- a/OpenSim/ApplicationPlugins/Rest/Inventory/RestHandler.cs +++ b/OpenSim/ApplicationPlugins/Rest/Inventory/RestHandler.cs @@ -32,9 +32,16 @@ using System.Reflection; using OpenSim.Framework; using OpenSim.Framework.Servers; using OpenSim.ApplicationPlugins.Rest; +using Mono.Addins; + +[assembly : Addin] +[assembly : AddinDependency("OpenSim", "0.5")] namespace OpenSim.ApplicationPlugins.Rest.Inventory { + + [Extension("/OpenSim/Startup")] + public class RestHandler : RestPlugin, IHttpAgentHandler { diff --git a/OpenSim/ApplicationPlugins/Rest/Regions/GETHandler.cs b/OpenSim/ApplicationPlugins/Rest/Regions/GETHandler.cs index 2734c77..a605d09 100644 --- a/OpenSim/ApplicationPlugins/Rest/Regions/GETHandler.cs +++ b/OpenSim/ApplicationPlugins/Rest/Regions/GETHandler.cs @@ -37,6 +37,7 @@ using System.Timers; using System.Xml; using System.Xml.Serialization; using libsecondlife; +using Mono.Addins; using Nwc.XmlRpc; using Nini.Config; using OpenSim.Framework; diff --git a/OpenSim/ApplicationPlugins/Rest/Regions/POSTHandler.cs b/OpenSim/ApplicationPlugins/Rest/Regions/POSTHandler.cs index a40af29..e6131f1 100644 --- a/OpenSim/ApplicationPlugins/Rest/Regions/POSTHandler.cs +++ b/OpenSim/ApplicationPlugins/Rest/Regions/POSTHandler.cs @@ -37,6 +37,7 @@ using System.Timers; using System.Xml; using System.Xml.Serialization; using libsecondlife; +using Mono.Addins; using Nwc.XmlRpc; using Nini.Config; using OpenSim.Framework; diff --git a/OpenSim/ApplicationPlugins/Rest/Regions/RestRegionPlugin.cs b/OpenSim/ApplicationPlugins/Rest/Regions/RestRegionPlugin.cs index 5ec2526..9d68225 100644 --- a/OpenSim/ApplicationPlugins/Rest/Regions/RestRegionPlugin.cs +++ b/OpenSim/ApplicationPlugins/Rest/Regions/RestRegionPlugin.cs @@ -37,6 +37,7 @@ using System.Timers; using System.Xml; using System.Xml.Serialization; using libsecondlife; +using Mono.Addins; using Nwc.XmlRpc; using Nini.Config; using OpenSim.Framework; @@ -46,8 +47,13 @@ using OpenSim.Framework.Communications; using OpenSim.Region.Environment.Scenes; using OpenSim.ApplicationPlugins.Rest; +[assembly : Addin] +[assembly : AddinDependency("OpenSim", "0.5")] + namespace OpenSim.ApplicationPlugins.Rest.Regions { + + [Extension("/OpenSim/Startup")] public partial class RestRegionPlugin : RestPlugin { private static XmlSerializerNamespaces _xmlNs; diff --git a/OpenSim/ApplicationPlugins/Rest/RestPlugin.cs b/OpenSim/ApplicationPlugins/Rest/RestPlugin.cs index 1f633d5..78e0e66 100644 --- a/OpenSim/ApplicationPlugins/Rest/RestPlugin.cs +++ b/OpenSim/ApplicationPlugins/Rest/RestPlugin.cs @@ -35,6 +35,7 @@ using System.Reflection; using System.Timers; using System.Xml; using libsecondlife; +using Mono.Addins; using Nwc.XmlRpc; using Nini.Config; using OpenSim.Framework; @@ -43,8 +44,13 @@ using OpenSim.Framework.Servers; using OpenSim.Framework.Communications; using OpenSim.Region.Environment.Scenes; +// [assembly : Addin] +// [assembly : AddinDependency("OpenSim", "0.5")] + namespace OpenSim.ApplicationPlugins.Rest { + + // [Extension("/OpenSim/Startup")] public abstract class RestPlugin : IApplicationPlugin { #region properties diff --git a/OpenSim/Framework/PluginLoader.cs b/OpenSim/Framework/PluginLoader.cs index cfc1d7c..9104958 100644 --- a/OpenSim/Framework/PluginLoader.cs +++ b/OpenSim/Framework/PluginLoader.cs @@ -55,7 +55,6 @@ namespace OpenSim.Framework } /// - /// Generic Plugin Loader /// public class PluginLoader : IDisposable where T : IPlugin @@ -67,17 +66,16 @@ namespace OpenSim.Framework private PluginInitialiserBase initialiser; private Dictionary constraints = new Dictionary(); - - private static bool runonce = false; + private static readonly ILog log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); - + public PluginInitialiserBase Initialiser { set { initialiser = value; } get { return initialiser; } } - + public List Plugins { get { return loaded; } @@ -86,19 +84,25 @@ namespace OpenSim.Framework public PluginLoader () { Initialiser = new PluginInitialiserBase(); - initialise_plugin_dir_ ("."); } public PluginLoader (PluginInitialiserBase init) { - Initialiser = init; - initialise_plugin_dir_ ("."); + Initialiser = init; } public PluginLoader (PluginInitialiserBase init, string dir) { - Initialiser = init; - initialise_plugin_dir_ (dir); + Initialiser = init; + AddPluginDir (dir); + } + + public void AddPluginDir (string dir) + { + suppress_console_output_ (true); + AddinManager.Initialize (dir); + AddinManager.Registry.Update (null); + suppress_console_output_ (false); } public void AddExtensionPoint (string extpoint) @@ -110,21 +114,22 @@ namespace OpenSim.Framework { constraints.Add (extpoint, cons); } - - public void Load (string extpoint) + + public void Load (string extpoint, string dir) { + AddPluginDir (dir); AddExtensionPoint (extpoint); Load(); } public void Load () { - log.Info("[PLUGINS]: Begin Loading " + AddinManager.Registry.RegistryPath); + suppress_console_output_ (true); + AddinManager.Registry.Update (null); + suppress_console_output_ (false); foreach (string ext in extpoints) { - log.Info("[PLUGINS]: Loading extension point " + ext); - if (constraints.ContainsKey (ext)) { IPluginConstraint cons = constraints [ext]; @@ -150,25 +155,9 @@ namespace OpenSim.Framework p.Dispose (); } - private void initialise_plugin_dir_ (string dir) - { - if (runonce == true) - return; - - log.Info("[PLUGINS]: Initialzing " + dir); - - clear_registry_(); - suppress_console_output_ (true); - AddinManager.Initialize (dir); - AddinManager.Registry.Update (null); - suppress_console_output_ (false); - runonce = true; - } - - private void clear_registry_ () + public void ClearCache() { - // The Mono addin manager (in Mono.Addins.dll version 0.2.0.0) - // occasionally seems to corrupt its addin cache + // The Mono addin manager (in Mono.Addins.dll version 0.2.0.0) occasionally seems to corrupt its addin cache // Hence, as a temporary solution we'll remove it before each startup if (Directory.Exists("addin-db-000")) Directory.Delete("addin-db-000", true); @@ -236,7 +225,7 @@ namespace OpenSim.Framework public PluginFilenameConstraint (string name) { filename = name; - + } public string Message @@ -256,7 +245,7 @@ namespace OpenSim.Framework string[] path = ns[0].Path.Split('/'); if (path [path.Length-1] == filename) return false; - + return true; } } diff --git a/OpenSim/Grid/GridServer/GridServerBase.cs b/OpenSim/Grid/GridServer/GridServerBase.cs index a8ebd27..3cd7489 100644 --- a/OpenSim/Grid/GridServer/GridServerBase.cs +++ b/OpenSim/Grid/GridServer/GridServerBase.cs @@ -31,6 +31,7 @@ using System.IO; using System.Reflection; using System.Timers; using log4net; +using Mono.Addins; using OpenSim.Framework; using OpenSim.Framework.Console; using OpenSim.Framework.Servers; @@ -120,7 +121,7 @@ namespace OpenSim.Grid.GridServer PluginLoader loader = new PluginLoader (new GridPluginInitialiser (this)); - loader.Load ("/OpenSim/GridServer"); + loader.Load ("/OpenSim/GridServer", "."); m_plugins = loader.Plugins; } diff --git a/OpenSim/Grid/GridServer/IGridPlugin.cs b/OpenSim/Grid/GridServer/IGridPlugin.cs index b8ac611..6593962 100644 --- a/OpenSim/Grid/GridServer/IGridPlugin.cs +++ b/OpenSim/Grid/GridServer/IGridPlugin.cs @@ -26,10 +26,14 @@ * */ +using Mono.Addins; using OpenSim.Framework; +[assembly : AddinRoot("OpenSim", "0.5")] + namespace OpenSim.Grid.GridServer { + [TypeExtensionPoint("/OpenSim/GridServer")] public interface IGridPlugin : IPlugin { void Initialise(GridServerBase gridServer); diff --git a/OpenSim/Region/Application/IApplicationPlugin.cs b/OpenSim/Region/Application/IApplicationPlugin.cs index 2e3122f..f122925 100644 --- a/OpenSim/Region/Application/IApplicationPlugin.cs +++ b/OpenSim/Region/Application/IApplicationPlugin.cs @@ -25,10 +25,14 @@ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ +using Mono.Addins; using OpenSim.Framework; +[assembly : AddinRoot("OpenSim", "0.5")] + namespace OpenSim { + [TypeExtensionPoint("/OpenSim/Startup")] public interface IApplicationPlugin : IPlugin { void Initialise(OpenSimBase openSim); diff --git a/OpenSim/Region/Application/OpenSimBase.cs b/OpenSim/Region/Application/OpenSimBase.cs index 065d2f2..37daf88 100644 --- a/OpenSim/Region/Application/OpenSimBase.cs +++ b/OpenSim/Region/Application/OpenSimBase.cs @@ -34,6 +34,7 @@ using System.Text; using System.Threading; using libsecondlife; using log4net; +using Mono.Addins; using Nini.Config; using OpenSim.Framework; using OpenSim.Framework.Communications.Cache; @@ -336,7 +337,7 @@ namespace OpenSim PluginLoader loader = new PluginLoader (new ApplicationPluginInitialiser (this)); - loader.Load ("/OpenSim/Startup"); + loader.Load ("/OpenSim/Startup", "."); m_plugins = loader.Plugins; } @@ -729,4 +730,3 @@ namespace OpenSim - -- cgit v1.1