diff options
Diffstat (limited to 'lib/Plugins.Runtime')
-rw-r--r-- | lib/Plugins.Runtime/src/LoaderExtensions.cs | 42 | ||||
-rw-r--r-- | lib/Plugins.Runtime/src/RuntimePluginLoader.cs | 1 |
2 files changed, 32 insertions, 11 deletions
diff --git a/lib/Plugins.Runtime/src/LoaderExtensions.cs b/lib/Plugins.Runtime/src/LoaderExtensions.cs index c553f4b..2c3caf5 100644 --- a/lib/Plugins.Runtime/src/LoaderExtensions.cs +++ b/lib/Plugins.Runtime/src/LoaderExtensions.cs @@ -157,7 +157,7 @@ namespace VNLib.Plugins.Runtime /// <exception cref="ArgumentNullException"></exception> public static void InitializeAll(this IPluginStack runtime) { - _ = runtime ?? throw new ArgumentNullException(nameof(runtime)); + ArgumentNullException.ThrowIfNull(runtime, nameof(runtime)); foreach(RuntimePluginLoader loader in runtime.Plugins) { @@ -173,7 +173,7 @@ namespace VNLib.Plugins.Runtime /// <exception cref="AggregateException"></exception> public static void InvokeLoad(this IPluginStack runtime) { - _ = runtime ?? throw new ArgumentNullException(nameof(runtime)); + ArgumentNullException.ThrowIfNull(runtime, nameof(runtime)); //try loading all plugins runtime.Plugins.TryForeach(static p => p.LoadPlugins()); @@ -216,7 +216,7 @@ namespace VNLib.Plugins.Runtime /// <exception cref="AggregateException"></exception> public static void ReloadAll(this IPluginStack runtime) { - _ = runtime ?? throw new ArgumentNullException(nameof(runtime)); + ArgumentNullException.ThrowIfNull(runtime, nameof(runtime)); //try reloading all plugins runtime.Plugins.TryForeach(static p => p.ReloadPlugins()); @@ -231,8 +231,8 @@ namespace VNLib.Plugins.Runtime /// <exception cref="ArgumentNullException"></exception> public static void RegsiterListener(this IPluginStack runtime, IPluginEventListener listener, object? state = null) { - _ = runtime ?? throw new ArgumentNullException(nameof(runtime)); - _ = listener ?? throw new ArgumentNullException(nameof(listener)); + ArgumentNullException.ThrowIfNull(runtime, nameof(runtime)); + ArgumentNullException.ThrowIfNull(listener, nameof(listener)); //Register for all plugins foreach (PluginController controller in runtime.Plugins.Select(static p => p.Controller)) @@ -249,8 +249,8 @@ namespace VNLib.Plugins.Runtime /// <exception cref="ArgumentNullException"></exception> public static void UnregsiterListener(this IPluginStack runtime, IPluginEventListener listener) { - _ = runtime ?? throw new ArgumentNullException(nameof(runtime)); - _ = listener ?? throw new ArgumentNullException(nameof(listener)); + ArgumentNullException.ThrowIfNull(runtime, nameof(runtime)); + ArgumentNullException.ThrowIfNull(listener, nameof(listener)); //Unregister for all plugins foreach (PluginController controller in runtime.Plugins.Select(static p => p.Controller)) @@ -268,7 +268,7 @@ namespace VNLib.Plugins.Runtime /// <returns>The current builder instance for chaining</returns> public static PluginStackBuilder WithLocalJsonConfig(this PluginStackBuilder builder, in JsonElement? hostConfig) { - _ = builder ?? throw new ArgumentNullException(nameof(builder)); + ArgumentNullException.ThrowIfNull(builder, nameof(builder)); LocalFilePluginConfigReader reader; @@ -297,6 +297,19 @@ namespace VNLib.Plugins.Runtime } /// <summary> + /// Sets an empty/null configuration reader for the plugin stack. No + /// configuration will be passed to plugins. + /// </summary> + /// <param name="builder"></param> + /// <returns>The current builder instance for chaining</returns> + /// <exception cref="ArgumentNullException"></exception> + public static PluginStackBuilder WithNullConfig(this PluginStackBuilder builder) + { + ArgumentNullException.ThrowIfNull(builder, nameof(builder)); + return builder.WithConfigurationReader(new NullPluginConfigReader()); + } + + /// <summary> /// Specifies the directory that the plugin loader will search for plugins in /// </summary> /// <param name="path">The search directory path</param> @@ -314,8 +327,8 @@ namespace VNLib.Plugins.Runtime /// <exception cref="ArgumentNullException"></exception> public static PluginStackBuilder WithSearchDirectory(this PluginStackBuilder builder, DirectoryInfo dir) { - _ = builder ?? throw new ArgumentNullException(nameof(builder)); - _ = dir ?? throw new ArgumentNullException(nameof(dir)); + ArgumentNullException.ThrowIfNull(builder, nameof(builder)); + ArgumentNullException.ThrowIfNull(dir, nameof(dir)); PluginDirectorySearcher dirSearcher = new (dir); builder.WithDiscoveryManager(dirSearcher); @@ -415,5 +428,14 @@ namespace VNLib.Plugins.Runtime } } } + + private sealed class NullPluginConfigReader : IPluginConfigReader + { + ///<inheritdoc/> + public void ReadPluginConfigData(IPluginAssemblyLoadConfig asmConfig, Stream outputStream) + { + //Do nothing + } + } } } diff --git a/lib/Plugins.Runtime/src/RuntimePluginLoader.cs b/lib/Plugins.Runtime/src/RuntimePluginLoader.cs index a1231c9..cef4d47 100644 --- a/lib/Plugins.Runtime/src/RuntimePluginLoader.cs +++ b/lib/Plugins.Runtime/src/RuntimePluginLoader.cs @@ -57,7 +57,6 @@ namespace VNLib.Plugins.Runtime /// Creates a new <see cref="RuntimePluginLoader"/> with the specified config and host config dom. /// </summary> /// <param name="loader">The plugin's assembly loader</param> - /// <param name="hostConfig">The host/process configuration DOM</param> /// <param name="log">A log provider to write plugin unload log events to</param> /// <exception cref="ArgumentNullException"></exception> public RuntimePluginLoader(IPluginAssemblyLoader loader, ILogProvider? log) |