From 5c9f70c3752bd7297cb85bdc7ce748363a16ad8b Mon Sep 17 00:00:00 2001 From: Shadowghost Date: Wed, 30 Apr 2025 09:29:13 +0200 Subject: Cleanup Tasks and Validators --- .../ScheduledTasks/Triggers/IntervalTrigger.cs | 155 ++++++++++----------- 1 file changed, 77 insertions(+), 78 deletions(-) (limited to 'Emby.Server.Implementations/ScheduledTasks/Triggers/IntervalTrigger.cs') diff --git a/Emby.Server.Implementations/ScheduledTasks/Triggers/IntervalTrigger.cs b/Emby.Server.Implementations/ScheduledTasks/Triggers/IntervalTrigger.cs index 9425b47d02..d6773b65e8 100644 --- a/Emby.Server.Implementations/ScheduledTasks/Triggers/IntervalTrigger.cs +++ b/Emby.Server.Implementations/ScheduledTasks/Triggers/IntervalTrigger.cs @@ -4,104 +4,103 @@ using System.Threading; using MediaBrowser.Model.Tasks; using Microsoft.Extensions.Logging; -namespace Emby.Server.Implementations.ScheduledTasks.Triggers +namespace Emby.Server.Implementations.ScheduledTasks.Triggers; + +/// +/// Represents a task trigger that runs repeatedly on an interval. +/// +public sealed class IntervalTrigger : ITaskTrigger, IDisposable { + private readonly TimeSpan _interval; + private DateTime _lastStartDate; + private Timer? _timer; + private bool _disposed; + /// - /// Represents a task trigger that runs repeatedly on an interval. + /// Initializes a new instance of the class. /// - public sealed class IntervalTrigger : ITaskTrigger, IDisposable + /// The interval. + /// The options of this task. + public IntervalTrigger(TimeSpan interval, TaskOptions taskOptions) { - private readonly TimeSpan _interval; - private DateTime _lastStartDate; - private Timer? _timer; - private bool _disposed = false; - - /// - /// Initializes a new instance of the class. - /// - /// The interval. - /// The options of this task. - public IntervalTrigger(TimeSpan interval, TaskOptions taskOptions) - { - _interval = interval; - TaskOptions = taskOptions; - } + _interval = interval; + TaskOptions = taskOptions; + } + + /// + public event EventHandler? Triggered; - /// - public event EventHandler? Triggered; + /// + public TaskOptions TaskOptions { get; } + + /// + public void Start(TaskResult? lastResult, ILogger logger, string taskName, bool isApplicationStartup) + { + DisposeTimer(); - /// - public TaskOptions TaskOptions { get; } + DateTime now = DateTime.UtcNow; + DateTime triggerDate; - /// - public void Start(TaskResult? lastResult, ILogger logger, string taskName, bool isApplicationStartup) + if (lastResult is null) { - DisposeTimer(); - - DateTime now = DateTime.UtcNow; - DateTime triggerDate; - - if (lastResult is null) - { - // Task has never been completed before - triggerDate = now.AddHours(1); - } - else - { - triggerDate = new[] { lastResult.EndTimeUtc, _lastStartDate, now.AddMinutes(1) }.Max().Add(_interval); - } - - var dueTime = triggerDate - now; - var maxDueTime = TimeSpan.FromDays(7); - - if (dueTime > maxDueTime) - { - dueTime = maxDueTime; - } - - _timer = new Timer(_ => OnTriggered(), null, dueTime, TimeSpan.FromMilliseconds(-1)); + // Task has never been completed before + triggerDate = now.AddHours(1); } - - /// - public void Stop() + else { - DisposeTimer(); + triggerDate = new[] { lastResult.EndTimeUtc, _lastStartDate, now.AddMinutes(1) }.Max().Add(_interval); } - /// - /// Disposes the timer. - /// - private void DisposeTimer() + var dueTime = triggerDate - now; + var maxDueTime = TimeSpan.FromDays(7); + + if (dueTime > maxDueTime) { - _timer?.Dispose(); - _timer = null; + dueTime = maxDueTime; } - /// - /// Called when [triggered]. - /// - private void OnTriggered() - { - DisposeTimer(); + _timer = new Timer(_ => OnTriggered(), null, dueTime, TimeSpan.FromMilliseconds(-1)); + } + + /// + public void Stop() + { + DisposeTimer(); + } - if (Triggered is not null) - { - _lastStartDate = DateTime.UtcNow; - Triggered(this, EventArgs.Empty); - } + /// + /// Disposes the timer. + /// + private void DisposeTimer() + { + _timer?.Dispose(); + _timer = null; + } + + /// + /// Called when [triggered]. + /// + private void OnTriggered() + { + DisposeTimer(); + + if (Triggered is not null) + { + _lastStartDate = DateTime.UtcNow; + Triggered(this, EventArgs.Empty); } + } - /// - public void Dispose() + /// + public void Dispose() + { + if (_disposed) { - if (_disposed) - { - return; - } + return; + } - DisposeTimer(); + DisposeTimer(); - _disposed = true; - } + _disposed = true; } } -- cgit v1.2.3