Files
squad-rain-ops-mini/Services/BanSyncService.cs

48 lines
1.6 KiB
C#

using System;
using System.Threading;
using System.Threading.Tasks;
using Microsoft.Extensions.Hosting;
using Microsoft.Extensions.Logging;
namespace RainOpsMini.Services
{
public class BanSyncService : BackgroundService
{
private readonly BanService _banService;
private readonly BanSyncState _syncState;
private readonly ILogger<BanSyncService> _logger;
public BanSyncService(BanService banService, BanSyncState syncState, ILogger<BanSyncService> logger)
{
_banService = banService;
_syncState = syncState;
_logger = logger;
}
protected override async Task ExecuteAsync(CancellationToken stoppingToken)
{
_logger.LogInformation("BanSyncService is starting.");
while (!stoppingToken.IsCancellationRequested)
{
try
{
_logger.LogInformation("Syncing bans to Bans.cfg...");
await _banService.SyncToConfigFileAsync();
_syncState.LastSyncTime = DateTime.Now;
_syncState.NextSyncTime = DateTime.Now.Add(_syncState.Interval);
_logger.LogInformation($"Ban sync completed. Next sync at: {_syncState.NextSyncTime}");
}
catch (Exception ex)
{
_logger.LogError(ex, "Error occurred while syncing bans.");
}
await Task.Delay(_syncState.Interval, stoppingToken);
}
}
}
}