Files
lux/EgwCoreLib.Lux.Data/Services/CleanupService.cs
T
2025-12-12 18:51:53 +01:00

60 lines
1.7 KiB
C#

using EgwCoreLib.Lux.Data.Services;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.Hosting;
using System;
using System.Threading;
using System.Threading.Tasks;
namespace EgwCoreLib.Lux.Data.Services
{
public class CleanupService : BackgroundService
{
#region Public Constructors
/// <summary>
/// Init classe con il servizio di gestione RUID
/// </summary>
/// <param name="crService"></param>
public CleanupService(IConfiguration config, CalcRuidService crService)
{
_config = config;
try
{
reqPeriodMinute = _config.GetValue<int>("ServerConf:CleanupPeriodMinutes");
}
catch
{
reqPeriodMinute = 60;
}
_calcRuidService = crService;
}
#endregion Public Constructors
#region Protected Methods
protected override async Task ExecuteAsync(CancellationToken stoppingToken)
{
while (!stoppingToken.IsCancellationRequested)
{
var combos = await _calcRuidService.GetCombinationsAsync();
foreach (var (env, tipo) in combos)
await _calcRuidService.CleanupOldRequestsAsync(env, tipo);
// attesa tra le esecuzioni
await Task.Delay(TimeSpan.FromMinutes(reqPeriodMinute), stoppingToken);
}
}
#endregion Protected Methods
#region Private Fields
private readonly CalcRuidService _calcRuidService;
private IConfiguration _config;
private int reqPeriodMinute = 60;
#endregion Private Fields
}
}