using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Hosting; using Microsoft.Extensions.Logging; using Microsoft.Extensions.Options; using SatelliteProvider.Common.Configs; using SatelliteProvider.Common.Interfaces; namespace SatelliteProvider.Services.RegionProcessing; public static class RegionProcessingServiceCollectionExtensions { public static IServiceCollection AddRegionProcessing(this IServiceCollection services) { services.AddSingleton(sp => { var processingConfig = sp.GetRequiredService>().Value; var logger = sp.GetRequiredService>(); return new RegionRequestQueue(processingConfig.QueueCapacity, logger); }); services.AddSingleton(); services.AddHostedService(); return services; } }