|
|
@@ -13,26 +13,63 @@ namespace MQTTnet.AspNetCore |
|
|
|
public static IServiceCollection AddHostedMqttServer(this IServiceCollection services, IMqttServerOptions options) |
|
|
|
{ |
|
|
|
if (options == null) throw new ArgumentNullException(nameof(options)); |
|
|
|
|
|
|
|
services.AddSingleton(options); |
|
|
|
|
|
|
|
services.AddHostedMqttServer(); |
|
|
|
|
|
|
|
return services; |
|
|
|
} |
|
|
|
|
|
|
|
public static IServiceCollection AddHostedMqttServer(this IServiceCollection services, Action<MqttServerOptionsBuilder> configure) |
|
|
|
{ |
|
|
|
var builder = new MqttServerOptionsBuilder(); |
|
|
|
|
|
|
|
configure(builder); |
|
|
|
|
|
|
|
services.AddSingleton<IMqttServerOptions>(builder.Build()); |
|
|
|
|
|
|
|
services.AddHostedMqttServer(); |
|
|
|
|
|
|
|
return services; |
|
|
|
} |
|
|
|
|
|
|
|
public static IServiceCollection AddHostedMqttServer<TOptions>(this IServiceCollection services) |
|
|
|
where TOptions : class, IMqttServerOptions |
|
|
|
{ |
|
|
|
services.AddSingleton<IMqttServerOptions, TOptions>(); |
|
|
|
|
|
|
|
services.AddHostedMqttServer(); |
|
|
|
|
|
|
|
return services; |
|
|
|
} |
|
|
|
|
|
|
|
public static IServiceCollection AddHostedMqttServer(this IServiceCollection services) |
|
|
|
{ |
|
|
|
var logger = new MqttNetLogger(); |
|
|
|
var childLogger = logger.CreateChildLogger(); |
|
|
|
|
|
|
|
services.AddSingleton(options); |
|
|
|
services.AddSingleton<IMqttNetLogger>(logger); |
|
|
|
services.AddSingleton(childLogger); |
|
|
|
services.AddSingleton<MqttHostedServer>(); |
|
|
|
services.AddSingleton<IHostedService>(s => s.GetService<MqttHostedServer>()); |
|
|
|
services.AddSingleton<IMqttServer>(s => s.GetService<MqttHostedServer>()); |
|
|
|
|
|
|
|
return services; |
|
|
|
} |
|
|
|
|
|
|
|
public static IServiceCollection AddMqttWebSocketServerAdapter(this IServiceCollection services) |
|
|
|
{ |
|
|
|
services.AddSingleton<MqttWebSocketServerAdapter>(); |
|
|
|
services.AddSingleton<MqttTcpServerAdapter>(); |
|
|
|
services.AddSingleton<IMqttServerAdapter>(s => s.GetService<MqttWebSocketServerAdapter>()); |
|
|
|
|
|
|
|
if (options.DefaultEndpointOptions.IsEnabled) |
|
|
|
{ |
|
|
|
services.AddSingleton<MqttTcpServerAdapter>(); |
|
|
|
services.AddSingleton<IMqttServerAdapter>(s => s.GetService<MqttTcpServerAdapter>()); |
|
|
|
} |
|
|
|
return services; |
|
|
|
} |
|
|
|
|
|
|
|
public static IServiceCollection AddMqttTcpServerAdapter(this IServiceCollection services) |
|
|
|
{ |
|
|
|
services.AddSingleton<MqttTcpServerAdapter>(); |
|
|
|
services.AddSingleton<IMqttServerAdapter>(s => s.GetService<MqttTcpServerAdapter>()); |
|
|
|
|
|
|
|
return services; |
|
|
|
} |
|
|
|