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 StatsCollectService : BackgroundService
{
#region Public Constructors
///
/// Init classe con il servizio di gestione RUID
///
///
public StatsCollectService(IConfiguration config, CalcRuidService crService)
{
_config = config;
try
{
clearProcessed = _config.GetValue("ServerConf:CleanupProcessed");
refreshPeriod = _config.GetValue("ServerConf:RefreshPeriodMinutes");
}
catch
{
refreshPeriod = 60;
}
_calcRuidService = crService;
}
#endregion Public Constructors
private bool clearProcessed = false;
#region Protected Methods
protected override async Task ExecuteAsync(CancellationToken stoppingToken)
{
while (!stoppingToken.IsCancellationRequested)
{
await _calcRuidService.ExportStatsToDbAsync(clearProcessed);
// attesa tra le esecuzioni
await Task.Delay(TimeSpan.FromMinutes(refreshPeriod), stoppingToken);
}
}
#endregion Protected Methods
#region Private Fields
private readonly CalcRuidService _calcRuidService;
private IConfiguration _config;
private int refreshPeriod = 10;
#endregion Private Fields
}
}