aboutsummaryrefslogtreecommitdiff
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
parentd3fa866898747c7b7535f2796f8046cdd9766763 (diff)
update manual plugin loading api
-rw-r--r--apps/VNLib.WebServer/src/Bootstrap/WebserverBase.cs4
-rw-r--r--lib/Plugins.Essentials.ServiceStack/src/Construction/HttpServiceStackBuilder.cs14
2 files changed, 12 insertions, 6 deletions
diff --git a/apps/VNLib.WebServer/src/Bootstrap/WebserverBase.cs b/apps/VNLib.WebServer/src/Bootstrap/WebserverBase.cs
index f3832c6..67fc306 100644
--- a/apps/VNLib.WebServer/src/Bootstrap/WebserverBase.cs
+++ b/apps/VNLib.WebServer/src/Bootstrap/WebserverBase.cs
@@ -93,6 +93,10 @@ namespace VNLib.WebServer.Bootstrap
HttpServiceStackBuilder builder = new HttpServiceStackBuilder()
.LoadPluginsConcurrently(loadPluginsConcurrently)
.WithBuiltInHttp(TcpConfig.ReduceBindingsForGroups, http)
+ .WithManualPlugins(plugins =>
+ {
+
+ })
.WithDomain(domain =>
{
domain.WithServiceGroups(vh =>
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);
}
/*