aboutsummaryrefslogtreecommitdiff
path: root/lib/Plugins.Essentials.ServiceStack/src/PluginLoadConfiguration.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/PluginLoadConfiguration.cs
parentbaf859f45cf1f00e79508954517ed4b6fb446103 (diff)
Managed assembly loading overhaul
Diffstat (limited to 'lib/Plugins.Essentials.ServiceStack/src/PluginLoadConfiguration.cs')
-rw-r--r--lib/Plugins.Essentials.ServiceStack/src/PluginLoadConfiguration.cs25
1 files changed, 10 insertions, 15 deletions
diff --git a/lib/Plugins.Essentials.ServiceStack/src/PluginLoadConfiguration.cs b/lib/Plugins.Essentials.ServiceStack/src/PluginLoadConfiguration.cs
index 894ae55..9ab9a82 100644
--- a/lib/Plugins.Essentials.ServiceStack/src/PluginLoadConfiguration.cs
+++ b/lib/Plugins.Essentials.ServiceStack/src/PluginLoadConfiguration.cs
@@ -3,9 +3,9 @@
*
* Library: VNLib
* Package: VNLib.Plugins.Essentials.ServiceStack
-* File: PluginLoadConfiguration.cs
+* File: IPluginLoadConfiguration.cs
*
-* PluginLoadConfiguration.cs is part of VNLib.Plugins.Essentials.ServiceStack
+* IPluginLoadConfiguration.cs is part of VNLib.Plugins.Essentials.ServiceStack
* which is part of the larger VNLib collection of libraries and utilities.
*
* VNLib.Plugins.Essentials.ServiceStack is free software: you can redistribute it and/or modify
@@ -30,38 +30,33 @@ using VNLib.Plugins.Runtime;
namespace VNLib.Plugins.Essentials.ServiceStack
{
+
/// <summary>
/// Plugin loading configuration variables
/// </summary>
- public readonly record struct PluginLoadConfiguration
+ public interface IPluginLoadConfiguration
{
/// <summary>
/// The directory containing the dynamic plugin assemblies to load
/// </summary>
- public readonly string PluginDir { get; init; }
-
- /// <summary>
- /// A value that indicates if the internal <see cref="PluginController"/>
- /// allows for hot-reload/unloadable plugin assemblies.
- /// </summary>
- public readonly bool HotReload { get; init; }
+ string PluginDir { get; }
/// <summary>
/// The optional host configuration file to merge with plugin config
/// to pass to the loading plugin.
/// </summary>
- public readonly JsonElement? HostConfig { get; init; }
+ JsonElement? HostConfig { get; }
/// <summary>
/// Passed to the underlying <see cref="RuntimePluginLoader"/>
/// holding plugins
/// </summary>
- public readonly ILogProvider? PluginErrorLog { get; init; }
+ ILogProvider? PluginErrorLog { get; }
/// <summary>
- /// If hot-reload is enabled, sets a time delay the file watcher waits when
- /// a plugin assembly has changed.
+ /// A factory instance the provides new <see cref="IPluginAssemblyLoader"/> instances
+ /// on demand from its plugin assembly path
/// </summary>
- public readonly TimeSpan ReloadDelay { get; init; }
+ public IPluginAssemblyLoaderFactory AssemblyLoaderFactory { get; init; }
}
}