aboutsummaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorLibravatar vnugent <public@vaughnnugent.com>2024-09-07 14:51:44 -0400
committerLibravatar vnugent <public@vaughnnugent.com>2024-09-07 14:51:44 -0400
commitf7eb445c9fcf4557f0bf1e1622673242b7da5ced (patch)
tree594dfe30c427a04a1b8960e94e104b2911702cb5 /lib
parentd3fa866898747c7b7535f2796f8046cdd9766763 (diff)
update manual plugin loading api
Diffstat (limited to 'lib')
-rw-r--r--lib/Plugins.Essentials.ServiceStack/src/Construction/HttpServiceStackBuilder.cs14
1 files changed, 8 insertions, 6 deletions
diff --git a/lib/Plugins.Essentials.ServiceStack/src/Construction/HttpServiceStackBuilder.cs b/lib/Plugins.Essentials.ServiceStack/src/Construction/HttpServiceStackBuilder.cs
index 34c68bf..5367b5c 100644
--- a/lib/Plugins.Essentials.ServiceStack/src/Construction/HttpServiceStackBuilder.cs
+++ b/lib/Plugins.Essentials.ServiceStack/src/Construction/HttpServiceStackBuilder.cs
@@ -54,7 +54,7 @@ namespace VNLib.Plugins.Essentials.ServiceStack.Construction
private Action<ServiceBuilder>? _hostBuilder;
private Func<IReadOnlyCollection<ServiceGroup>, IHttpServer[]>? _getServers;
private Func<IPluginStack>? _getPlugins;
- private IManualPlugin[]? manualPlugins;
+ private Action<ICollection<IManualPlugin>>? _addManualPlugins;
private bool loadConcurrently;
/// <summary>
@@ -129,9 +129,9 @@ namespace VNLib.Plugins.Essentials.ServiceStack.Construction
/// </summary>
/// <param name="plugins">The array of plugins (or params) to add</param>
/// <returns>The current instance for chaining</returns>
- public HttpServiceStackBuilder WithManualPlugins(params IManualPlugin[] plugins)
+ public HttpServiceStackBuilder WithManualPlugins(Action<ICollection<IManualPlugin>>? plugins)
{
- manualPlugins = plugins;
+ _addManualPlugins = plugins;
return this;
}
@@ -181,8 +181,10 @@ namespace VNLib.Plugins.Essentials.ServiceStack.Construction
private PluginStackInitializer GetPluginStack(ServiceDomain domain)
{
- //Always init manual array
- manualPlugins ??= [];
+ List<IManualPlugin> _manualPlugins = [];
+
+ //Add manual plugins if configured
+ _addManualPlugins?.Invoke(_manualPlugins);
//Only load plugins if the callback is configured
IPluginStack? plugins = _getPlugins?.Invoke();
@@ -191,7 +193,7 @@ namespace VNLib.Plugins.Essentials.ServiceStack.Construction
plugins ??= new EmptyPluginStack();
#pragma warning restore CA2000 // Dispose objects before losing scope
- return new (domain.GetListener(), plugins, manualPlugins, loadConcurrently);
+ return new(domain.GetListener(), plugins, [.. _manualPlugins], loadConcurrently);
}
/*