34 lines
1.2 KiB
C#
34 lines
1.2 KiB
C#
using Birdmap.API.Options;
|
|
using Birdmap.API.Services.Mqtt;
|
|
using Microsoft.Extensions.DependencyInjection;
|
|
using Microsoft.Extensions.Hosting;
|
|
using System;
|
|
|
|
namespace Birdmap.API.Extensions
|
|
{
|
|
public static class ServiceCollectionExtensions
|
|
{
|
|
public static IServiceCollection AddMqttClientServiceWithConfig(this IServiceCollection services, Action<AspCoreMqttClientOptions> configureOptions)
|
|
{
|
|
services.AddSingleton(serviceProvider =>
|
|
{
|
|
var optionBuilder = new AspCoreMqttClientOptions(serviceProvider);
|
|
configureOptions(optionBuilder);
|
|
return optionBuilder.Build();
|
|
});
|
|
services.AddSingleton<MqttClientService>();
|
|
services.AddSingleton<IHostedService>(serviceProvider =>
|
|
{
|
|
return serviceProvider.GetService<MqttClientService>();
|
|
});
|
|
services.AddSingleton(serviceProvider =>
|
|
{
|
|
var mqttClientService = serviceProvider.GetService<MqttClientService>();
|
|
var mqttClientServiceProvider = new MqttClientServiceProvider(mqttClientService);
|
|
return mqttClientServiceProvider;
|
|
});
|
|
return services;
|
|
}
|
|
}
|
|
}
|