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 --- .../src/Construction/HttpServiceStackBuilder.cs | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) (limited to 'lib') 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