mirror of
https://gitee.com/xiarenalofs/squad-rain-ops-mini.git
synced 2026-08-05 21:15:52 +08:00
48 lines
1.6 KiB
C#
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);
|
|
}
|
|
}
|
|
}
|
|
}
|