using System; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Hosting; using MQTTnet.Adapter; using MQTTnet.Diagnostics; using MQTTnet.Server; using MQTTnet.Implementations; namespace MQTTnet.AspNetCore { public static class ServiceCollectionExtensions { public static IServiceCollection AddHostedMqttServer(this IServiceCollection services, IMqttServerOptions options) { if (options == null) throw new ArgumentNullException(nameof(options)); var logger = new MqttNetLogger(); var childLogger = logger.CreateChildLogger(); services.AddSingleton(options); services.AddSingleton(logger); services.AddSingleton(childLogger); services.AddSingleton(); services.AddSingleton(s => s.GetService()); services.AddSingleton(s => s.GetService()); services.AddSingleton(); services.AddSingleton(); services.AddSingleton(s => s.GetService()); if (options.DefaultEndpointOptions.IsEnabled) { services.AddSingleton(s => s.GetService()); } return services; } } }