diff options
author | vnugent <public@vaughnnugent.com> | 2024-09-07 14:51:44 -0400 |
---|---|---|
committer | vnugent <public@vaughnnugent.com> | 2024-09-07 14:51:44 -0400 |
commit | f7eb445c9fcf4557f0bf1e1622673242b7da5ced (patch) | |
tree | 594dfe30c427a04a1b8960e94e104b2911702cb5 /lib/Plugins.Essentials.ServiceStack/src | |
parent | d3fa866898747c7b7535f2796f8046cdd9766763 (diff) |
update manual plugin loading api
Diffstat (limited to 'lib/Plugins.Essentials.ServiceStack/src')
-rw-r--r-- | lib/Plugins.Essentials.ServiceStack/src/Construction/HttpServiceStackBuilder.cs | 14 |
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); } /* |