From 0442bc8fd105da2de74213948917c042c112056a Mon Sep 17 00:00:00 2001 From: christian <6939810+chkr1011@users.noreply.github.com> Date: Sun, 28 Apr 2024 12:11:57 +0200 Subject: [PATCH] Fix broken null support for _AddMqttServer_ method. --- .../ServiceCollectionExtensions.cs | 55 +++++++++---------- 1 file changed, 26 insertions(+), 29 deletions(-) diff --git a/Source/MQTTnet.AspnetCore/ServiceCollectionExtensions.cs b/Source/MQTTnet.AspnetCore/ServiceCollectionExtensions.cs index 1186baeb..c6b8384b 100644 --- a/Source/MQTTnet.AspnetCore/ServiceCollectionExtensions.cs +++ b/Source/MQTTnet.AspnetCore/ServiceCollectionExtensions.cs @@ -21,55 +21,52 @@ namespace MQTTnet.AspNetCore { throw new ArgumentNullException(nameof(services)); } - + if (options == null) { throw new ArgumentNullException(nameof(options)); } - + services.AddSingleton(options); services.AddHostedMqttServer(); - + return services; } - + public static IServiceCollection AddHostedMqttServer(this IServiceCollection services, Action configure) { if (services == null) { throw new ArgumentNullException(nameof(services)); } - - if (configure == null) - { - throw new ArgumentNullException(nameof(configure)); - } - + var serverOptionsBuilder = new MqttServerOptionsBuilder(); - configure.Invoke(serverOptionsBuilder); + + configure?.Invoke(serverOptionsBuilder); + var options = serverOptionsBuilder.Build(); - + return AddHostedMqttServer(services, options); } - + public static void AddHostedMqttServer(this IServiceCollection services) { // The user may have these services already registered. services.TryAddSingleton(MqttNetNullLogger.Instance); services.TryAddSingleton(new MqttFactory()); - + services.AddSingleton(); services.AddSingleton(s => s.GetService()); services.AddSingleton(s => s.GetService()); } - + public static IServiceCollection AddHostedMqttServerWithServices(this IServiceCollection services, Action configure) { if (services == null) { throw new ArgumentNullException(nameof(services)); } - + services.AddSingleton( s => { @@ -77,56 +74,56 @@ namespace MQTTnet.AspNetCore configure(builder); return builder.Build(); }); - + services.AddHostedMqttServer(); - + return services; } - + public static IServiceCollection AddMqttConnectionHandler(this IServiceCollection services) { services.AddSingleton(); services.AddSingleton(s => s.GetService()); - + return services; } - + public static void AddMqttLogger(this IServiceCollection services, IMqttNetLogger logger) { if (services == null) { throw new ArgumentNullException(nameof(services)); } - + services.AddSingleton(logger); } - + public static IServiceCollection AddMqttServer(this IServiceCollection serviceCollection, Action configure = null) { if (serviceCollection is null) { throw new ArgumentNullException(nameof(serviceCollection)); } - + serviceCollection.AddMqttConnectionHandler(); serviceCollection.AddHostedMqttServer(configure); - + return serviceCollection; } - + public static IServiceCollection AddMqttTcpServerAdapter(this IServiceCollection services) { services.AddSingleton(); services.AddSingleton(s => s.GetService()); - + return services; } - + public static IServiceCollection AddMqttWebSocketServerAdapter(this IServiceCollection services) { services.AddSingleton(); services.AddSingleton(s => s.GetService()); - + return services; } }