diff options
author | vnugent <public@vaughnnugent.com> | 2023-04-15 01:58:55 -0400 |
---|---|---|
committer | vnugent <public@vaughnnugent.com> | 2023-04-15 01:58:55 -0400 |
commit | 3ce61cf38727db2f37a0e478182d2a73222c8a7c (patch) | |
tree | a03bf1bdde44961183b7bb34dea9c3381050dc27 /lib/Plugins.Essentials.ServiceStack/src/ManagedPlugin.cs | |
parent | baf859f45cf1f00e79508954517ed4b6fb446103 (diff) |
Managed assembly loading overhaul
Diffstat (limited to 'lib/Plugins.Essentials.ServiceStack/src/ManagedPlugin.cs')
-rw-r--r-- | lib/Plugins.Essentials.ServiceStack/src/ManagedPlugin.cs | 35 |
1 files changed, 6 insertions, 29 deletions
diff --git a/lib/Plugins.Essentials.ServiceStack/src/ManagedPlugin.cs b/lib/Plugins.Essentials.ServiceStack/src/ManagedPlugin.cs index 3bf99cb..54f0090 100644 --- a/lib/Plugins.Essentials.ServiceStack/src/ManagedPlugin.cs +++ b/lib/Plugins.Essentials.ServiceStack/src/ManagedPlugin.cs @@ -27,17 +27,12 @@ using System.IO; using System.Linq; using System.Threading; using System.Reflection; -using System.Runtime.Loader; -using System.Threading.Tasks; using System.ComponentModel.Design; -using McMaster.NETCore.Plugins; - using VNLib.Utils; using VNLib.Plugins.Runtime; using VNLib.Plugins.Attributes; - namespace VNLib.Plugins.Essentials.ServiceStack { @@ -48,39 +43,21 @@ namespace VNLib.Plugins.Essentials.ServiceStack private UnloadableServiceContainer? _services; - public ManagedPlugin(string pluginPath, in PluginLoadConfiguration config, IPluginEventListener listener) + public ManagedPlugin(RuntimePluginLoader loader, IPluginEventListener listener) { - PluginPath = pluginPath; - - //Get the plugin config for the assembly - PluginConfig pConfig = GetConfigForAssemblyPath(pluginPath, in config); - //configure the loader - _plugin = new(pConfig, config.HostConfig, config.PluginErrorLog); + _plugin = loader; - //Register listener before loading occurs + //Register loading event listener before loading occurs _plugin.Controller.Register(this, this); //Store listener to raise events _serviceDomainListener = listener; } - private static PluginConfig GetConfigForAssemblyPath(string asmPath, in PluginLoadConfiguration loadConfig) - { - PluginConfig config = new(asmPath) - { - IsUnloadable = loadConfig.HotReload, - EnableHotReload = loadConfig.HotReload, - IsLazyLoaded = false, - PreferSharedTypes = true, - DefaultContext = AssemblyLoadContext.Default, - ReloadDelay = loadConfig.ReloadDelay - }; - return config; - } ///<inheritdoc/> - public string PluginPath { get; } + public string PluginPath => _plugin.Config.AssemblyFile; ///<inheritdoc/> public IUnloadableServiceProvider Services @@ -104,10 +81,10 @@ namespace VNLib.Plugins.Essentials.ServiceStack internal string PluginFileName => Path.GetFileName(PluginPath); - internal Task InitializePluginsAsync() + internal void InitializePlugins() { Check(); - return _plugin.InitializeController(); + _plugin.InitializeController(); } internal void LoadPlugins() |