Fix broken null support for _AddMqttServer_ method.

This commit is contained in:
christian
2024-04-28 12:11:57 +02:00
parent 2710c0aab4
commit 0442bc8fd1
@@ -21,55 +21,52 @@ namespace MQTTnet.AspNetCore
{ {
throw new ArgumentNullException(nameof(services)); throw new ArgumentNullException(nameof(services));
} }
if (options == null) if (options == null)
{ {
throw new ArgumentNullException(nameof(options)); throw new ArgumentNullException(nameof(options));
} }
services.AddSingleton(options); services.AddSingleton(options);
services.AddHostedMqttServer(); services.AddHostedMqttServer();
return services; return services;
} }
public static IServiceCollection AddHostedMqttServer(this IServiceCollection services, Action<MqttServerOptionsBuilder> configure) public static IServiceCollection AddHostedMqttServer(this IServiceCollection services, Action<MqttServerOptionsBuilder> configure)
{ {
if (services == null) if (services == null)
{ {
throw new ArgumentNullException(nameof(services)); throw new ArgumentNullException(nameof(services));
} }
if (configure == null)
{
throw new ArgumentNullException(nameof(configure));
}
var serverOptionsBuilder = new MqttServerOptionsBuilder(); var serverOptionsBuilder = new MqttServerOptionsBuilder();
configure.Invoke(serverOptionsBuilder);
configure?.Invoke(serverOptionsBuilder);
var options = serverOptionsBuilder.Build(); var options = serverOptionsBuilder.Build();
return AddHostedMqttServer(services, options); return AddHostedMqttServer(services, options);
} }
public static void AddHostedMqttServer(this IServiceCollection services) public static void AddHostedMqttServer(this IServiceCollection services)
{ {
// The user may have these services already registered. // The user may have these services already registered.
services.TryAddSingleton<IMqttNetLogger>(MqttNetNullLogger.Instance); services.TryAddSingleton<IMqttNetLogger>(MqttNetNullLogger.Instance);
services.TryAddSingleton(new MqttFactory()); services.TryAddSingleton(new MqttFactory());
services.AddSingleton<MqttHostedServer>(); services.AddSingleton<MqttHostedServer>();
services.AddSingleton<IHostedService>(s => s.GetService<MqttHostedServer>()); services.AddSingleton<IHostedService>(s => s.GetService<MqttHostedServer>());
services.AddSingleton<MqttServer>(s => s.GetService<MqttHostedServer>()); services.AddSingleton<MqttServer>(s => s.GetService<MqttHostedServer>());
} }
public static IServiceCollection AddHostedMqttServerWithServices(this IServiceCollection services, Action<AspNetMqttServerOptionsBuilder> configure) public static IServiceCollection AddHostedMqttServerWithServices(this IServiceCollection services, Action<AspNetMqttServerOptionsBuilder> configure)
{ {
if (services == null) if (services == null)
{ {
throw new ArgumentNullException(nameof(services)); throw new ArgumentNullException(nameof(services));
} }
services.AddSingleton( services.AddSingleton(
s => s =>
{ {
@@ -77,56 +74,56 @@ namespace MQTTnet.AspNetCore
configure(builder); configure(builder);
return builder.Build(); return builder.Build();
}); });
services.AddHostedMqttServer(); services.AddHostedMqttServer();
return services; return services;
} }
public static IServiceCollection AddMqttConnectionHandler(this IServiceCollection services) public static IServiceCollection AddMqttConnectionHandler(this IServiceCollection services)
{ {
services.AddSingleton<MqttConnectionHandler>(); services.AddSingleton<MqttConnectionHandler>();
services.AddSingleton<IMqttServerAdapter>(s => s.GetService<MqttConnectionHandler>()); services.AddSingleton<IMqttServerAdapter>(s => s.GetService<MqttConnectionHandler>());
return services; return services;
} }
public static void AddMqttLogger(this IServiceCollection services, IMqttNetLogger logger) public static void AddMqttLogger(this IServiceCollection services, IMqttNetLogger logger)
{ {
if (services == null) if (services == null)
{ {
throw new ArgumentNullException(nameof(services)); throw new ArgumentNullException(nameof(services));
} }
services.AddSingleton(logger); services.AddSingleton(logger);
} }
public static IServiceCollection AddMqttServer(this IServiceCollection serviceCollection, Action<MqttServerOptionsBuilder> configure = null) public static IServiceCollection AddMqttServer(this IServiceCollection serviceCollection, Action<MqttServerOptionsBuilder> configure = null)
{ {
if (serviceCollection is null) if (serviceCollection is null)
{ {
throw new ArgumentNullException(nameof(serviceCollection)); throw new ArgumentNullException(nameof(serviceCollection));
} }
serviceCollection.AddMqttConnectionHandler(); serviceCollection.AddMqttConnectionHandler();
serviceCollection.AddHostedMqttServer(configure); serviceCollection.AddHostedMqttServer(configure);
return serviceCollection; return serviceCollection;
} }
public static IServiceCollection AddMqttTcpServerAdapter(this IServiceCollection services) public static IServiceCollection AddMqttTcpServerAdapter(this IServiceCollection services)
{ {
services.AddSingleton<MqttTcpServerAdapter>(); services.AddSingleton<MqttTcpServerAdapter>();
services.AddSingleton<IMqttServerAdapter>(s => s.GetService<MqttTcpServerAdapter>()); services.AddSingleton<IMqttServerAdapter>(s => s.GetService<MqttTcpServerAdapter>());
return services; return services;
} }
public static IServiceCollection AddMqttWebSocketServerAdapter(this IServiceCollection services) public static IServiceCollection AddMqttWebSocketServerAdapter(this IServiceCollection services)
{ {
services.AddSingleton<MqttWebSocketServerAdapter>(); services.AddSingleton<MqttWebSocketServerAdapter>();
services.AddSingleton<IMqttServerAdapter>(s => s.GetService<MqttWebSocketServerAdapter>()); services.AddSingleton<IMqttServerAdapter>(s => s.GetService<MqttWebSocketServerAdapter>());
return services; return services;
} }
} }