wabbajack/Wabbajack.Server/Services/Watchdog.cs

33 lines
1.1 KiB
C#
Raw Normal View History

using System;
using System.Threading.Tasks;
using Microsoft.Extensions.Logging;
using Wabbajack.BuildServer;
using Wabbajack.Server.DTOs;
2021-10-23 16:51:17 +00:00
namespace Wabbajack.Server.Services;
public class Watchdog : AbstractService<Watchdog, int>
{
2021-10-23 16:51:17 +00:00
private readonly DiscordWebHook _discord;
2021-10-23 16:51:17 +00:00
public Watchdog(ILogger<Watchdog> logger, AppSettings settings, QuickSync quickSync, DiscordWebHook discordWebHook)
: base(logger, settings, quickSync, TimeSpan.FromMinutes(5))
{
_discord = discordWebHook;
}
2021-10-23 16:51:17 +00:00
public override async Task<int> Execute()
{
var report = await _quickSync.Report();
foreach (var service in report)
if (service.Value.LastRunTime != default && service.Value.LastRunTime >= service.Value.Delay * 4)
await _discord.Send(Channel.Spam,
new DiscordMessage
{
Content =
$"Service {service.Key.Name} has missed it's scheduled execution window. \n Current work: \n {string.Join("\n", service.Value.ActiveWork)}"
});
2021-10-23 16:51:17 +00:00
return report.Count;
}
2021-10-23 16:51:17 +00:00
}