From f7eb445c9fcf4557f0bf1e1622673242b7da5ced Mon Sep 17 00:00:00 2001 From: vnugent Date: Sat, 7 Sep 2024 14:51:44 -0400 Subject: update manual plugin loading api --- apps/VNLib.WebServer/src/Bootstrap/WebserverBase.cs | 4 ++++ .../src/Construction/HttpServiceStackBuilder.cs | 14 ++++++++------ 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? _hostBuilder; private Func, IHttpServer[]>? _getServers; private Func? _getPlugins; - private IManualPlugin[]? manualPlugins; + private Action>? _addManualPlugins; private bool loadConcurrently; /// @@ -129,9 +129,9 @@ namespace VNLib.Plugins.Essentials.ServiceStack.Construction /// /// The array of plugins (or params) to add /// The current instance for chaining - public HttpServiceStackBuilder WithManualPlugins(params IManualPlugin[] plugins) + public HttpServiceStackBuilder WithManualPlugins(Action>? 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 _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); } /* -- cgit