Ready to test
This commit is contained in:
71
Worker.cs
Normal file
71
Worker.cs
Normal file
@ -0,0 +1,71 @@
|
||||
using System.Data;
|
||||
|
||||
using Gatus.To.MonA.Models;
|
||||
|
||||
using Microsoft.Extensions.Hosting.WindowsServices;
|
||||
|
||||
namespace Gatus.To.MonA;
|
||||
|
||||
public partial class Worker : BackgroundService {
|
||||
|
||||
private bool? _First;
|
||||
private readonly bool _IsWindowsService;
|
||||
private readonly ILogger<Worker> _Logger;
|
||||
private readonly AppSettings _AppSettings;
|
||||
private readonly IHttpClientFactory _HttpClientFactory;
|
||||
|
||||
public Worker(IHttpClientFactory httpClientFactory, ILogger<Worker> logger, IServiceProvider serviceProvider, AppSettings appSettings, List<string> collection) {
|
||||
_Logger = logger;
|
||||
_AppSettings = appSettings;
|
||||
_HttpClientFactory = httpClientFactory;
|
||||
logger.LogInformation(string.Join(Environment.NewLine, collection));
|
||||
try { logger.LogInformation("<{folder}>", Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData)); } catch (Exception) { }
|
||||
_First = null;
|
||||
_IsWindowsService = collection.Contains(nameof(WindowsServiceLifetime));
|
||||
}
|
||||
|
||||
public override Task StopAsync(CancellationToken cancellationToken) {
|
||||
if (_AppSettings.GatusToMonaConfiguration.Helper == nameof(Helpers.HelperGatusToMona))
|
||||
Helpers.HelperGatusToMona.Heartbeat(_AppSettings, _HttpClientFactory, _Logger, Infineon.Monitoring.MonA.State.Down, cancellationToken);
|
||||
return base.StopAsync(cancellationToken);
|
||||
}
|
||||
|
||||
private async Task Body(CancellationToken cancellationToken) {
|
||||
if (!_IsWindowsService) {
|
||||
_Logger.LogInformation("Set break point and skip to run {_AppSettings.GatusToMonaConfiguration.Helper}!", _AppSettings.GatusToMonaConfiguration.Helper);
|
||||
throw new EvaluateException($"Set break point and skip to run {_AppSettings.GatusToMonaConfiguration.Helper}!");
|
||||
}
|
||||
if (!_IsWindowsService) {
|
||||
for (int i = 0; i < int.MaxValue; i++) {
|
||||
BodyInner(cancellationToken);
|
||||
Thread.Sleep(_AppSettings.GatusToMonaConfiguration.MillisecondsDelay);
|
||||
}
|
||||
}
|
||||
while (_IsWindowsService && !cancellationToken.IsCancellationRequested) {
|
||||
BodyInner(cancellationToken);
|
||||
await Task.Delay(_AppSettings.GatusToMonaConfiguration.MillisecondsDelay, cancellationToken);
|
||||
}
|
||||
}
|
||||
|
||||
private void BodyInner(CancellationToken cancellationToken) {
|
||||
_Logger.LogInformation("A) Next execute will be at {date}", DateTime.Now.AddMilliseconds(_AppSettings.GatusToMonaConfiguration.MillisecondsDelay).ToString("yyyy-MM-dd hh:mm:ss.fff tt"));
|
||||
if (_First is null || _First.Value) {
|
||||
_First = false;
|
||||
if (_AppSettings.GatusToMonaConfiguration.Helper == nameof(Helpers.HelperGatusToMona))
|
||||
Helpers.HelperGatusToMona.Heartbeat(_AppSettings, _HttpClientFactory, _Logger, Infineon.Monitoring.MonA.State.Up, cancellationToken);
|
||||
}
|
||||
if (!Directory.Exists(_AppSettings.GatusToMonaConfiguration.Directory))
|
||||
_ = Directory.CreateDirectory(_AppSettings.GatusToMonaConfiguration.Directory);
|
||||
else {
|
||||
_ = _AppSettings.GatusToMonaConfiguration.Helper switch {
|
||||
nameof(Helpers.HelperGatusToMona) => Helpers.HelperGatusToMona.UpdateCount(_AppSettings, _Logger, cancellationToken),
|
||||
_ => throw new NotSupportedException()
|
||||
};
|
||||
}
|
||||
_Logger.LogInformation("B) Next execute will be at {date}", DateTime.Now.AddMilliseconds(_AppSettings.GatusToMonaConfiguration.MillisecondsDelay).ToString("yyyy-MM-dd hh:mm:ss.fff tt"));
|
||||
}
|
||||
|
||||
protected override async Task ExecuteAsync(CancellationToken cancellationToken) =>
|
||||
await Body(cancellationToken);
|
||||
|
||||
}
|
Reference in New Issue
Block a user