aboutsummaryrefslogtreecommitdiff
path: root/lib/Plugins.Essentials.ServiceStack/src/ManagedPlugin.cs
diff options
context:
space:
mode:
authorLibravatar vnugent <public@vaughnnugent.com>2023-04-15 01:58:55 -0400
committerLibravatar vnugent <public@vaughnnugent.com>2023-04-15 01:58:55 -0400
commit3ce61cf38727db2f37a0e478182d2a73222c8a7c (patch)
treea03bf1bdde44961183b7bb34dea9c3381050dc27 /lib/Plugins.Essentials.ServiceStack/src/ManagedPlugin.cs
parentbaf859f45cf1f00e79508954517ed4b6fb446103 (diff)
Managed assembly loading overhaul
Diffstat (limited to 'lib/Plugins.Essentials.ServiceStack/src/ManagedPlugin.cs')
-rw-r--r--lib/Plugins.Essentials.ServiceStack/src/ManagedPlugin.cs35
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()