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; } }