руфдер
This commit is contained in:
@@ -0,0 +1,30 @@
|
||||
using System.Threading;
|
||||
using PepperBot.Application.Interfaces;
|
||||
|
||||
namespace PepperBot.Infrastructure.Health;
|
||||
|
||||
public class PepperHealthMonitor : IHealthMonitor
|
||||
{
|
||||
private DateTimeOffset? _lastSuccessfulRequestAt;
|
||||
|
||||
public DateTimeOffset? LastSuccessfulRequestAt => _lastSuccessfulRequestAt;
|
||||
|
||||
public void ReportSuccess(DateTimeOffset timestamp)
|
||||
{
|
||||
// Просто запоминаем последнее успешное время; избыточную синхронизацию не вводим
|
||||
// так как запись идёт по одному воркеру.
|
||||
_lastSuccessfulRequestAt = timestamp;
|
||||
}
|
||||
|
||||
public bool IsHealthy(TimeSpan successTtl)
|
||||
{
|
||||
var last = _lastSuccessfulRequestAt;
|
||||
if (last is null)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
return DateTimeOffset.UtcNow - last.Value < successTtl;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user