aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Common/ScheduledTasks
diff options
context:
space:
mode:
Diffstat (limited to 'MediaBrowser.Common/ScheduledTasks')
-rw-r--r--MediaBrowser.Common/ScheduledTasks/DailyTrigger.cs8
-rw-r--r--MediaBrowser.Common/ScheduledTasks/ITaskTrigger.cs8
-rw-r--r--MediaBrowser.Common/ScheduledTasks/IntervalTrigger.cs37
-rw-r--r--MediaBrowser.Common/ScheduledTasks/StartupTrigger.cs8
-rw-r--r--MediaBrowser.Common/ScheduledTasks/SystemEventTrigger.cs7
-rw-r--r--MediaBrowser.Common/ScheduledTasks/WeeklyTrigger.cs4
6 files changed, 55 insertions, 17 deletions
diff --git a/MediaBrowser.Common/ScheduledTasks/DailyTrigger.cs b/MediaBrowser.Common/ScheduledTasks/DailyTrigger.cs
index 2f935607b..382a41255 100644
--- a/MediaBrowser.Common/ScheduledTasks/DailyTrigger.cs
+++ b/MediaBrowser.Common/ScheduledTasks/DailyTrigger.cs
@@ -1,6 +1,7 @@
-using System;
+using MediaBrowser.Model.Events;
+using MediaBrowser.Model.Tasks;
+using System;
using System.Threading;
-using MediaBrowser.Model.Events;
namespace MediaBrowser.Common.ScheduledTasks
{
@@ -32,8 +33,9 @@ namespace MediaBrowser.Common.ScheduledTasks
/// <summary>
/// Stars waiting for the trigger action
/// </summary>
+ /// <param name="lastResult">The last result.</param>
/// <param name="isApplicationStartup">if set to <c>true</c> [is application startup].</param>
- public void Start(bool isApplicationStartup)
+ public void Start(TaskResult lastResult, bool isApplicationStartup)
{
DisposeTimer();
diff --git a/MediaBrowser.Common/ScheduledTasks/ITaskTrigger.cs b/MediaBrowser.Common/ScheduledTasks/ITaskTrigger.cs
index d30111316..8c87f8f38 100644
--- a/MediaBrowser.Common/ScheduledTasks/ITaskTrigger.cs
+++ b/MediaBrowser.Common/ScheduledTasks/ITaskTrigger.cs
@@ -1,5 +1,6 @@
-using System;
-using MediaBrowser.Model.Events;
+using MediaBrowser.Model.Events;
+using MediaBrowser.Model.Tasks;
+using System;
namespace MediaBrowser.Common.ScheduledTasks
{
@@ -16,8 +17,9 @@ namespace MediaBrowser.Common.ScheduledTasks
/// <summary>
/// Stars waiting for the trigger action
/// </summary>
+ /// <param name="lastResult">The last result.</param>
/// <param name="isApplicationStartup">if set to <c>true</c> [is application startup].</param>
- void Start(bool isApplicationStartup);
+ void Start(TaskResult lastResult, bool isApplicationStartup);
/// <summary>
/// Stops waiting for the trigger action
diff --git a/MediaBrowser.Common/ScheduledTasks/IntervalTrigger.cs b/MediaBrowser.Common/ScheduledTasks/IntervalTrigger.cs
index 455a70d7e..b615adf81 100644
--- a/MediaBrowser.Common/ScheduledTasks/IntervalTrigger.cs
+++ b/MediaBrowser.Common/ScheduledTasks/IntervalTrigger.cs
@@ -1,6 +1,7 @@
-using System;
+using MediaBrowser.Model.Events;
+using MediaBrowser.Model.Tasks;
+using System;
using System.Threading;
-using MediaBrowser.Model.Events;
namespace MediaBrowser.Common.ScheduledTasks
{
@@ -30,14 +31,42 @@ namespace MediaBrowser.Common.ScheduledTasks
public TaskExecutionOptions TaskOptions { get; set; }
/// <summary>
+ /// Gets or sets the first run delay.
+ /// </summary>
+ /// <value>The first run delay.</value>
+ public TimeSpan FirstRunDelay { get; set; }
+
+ public IntervalTrigger()
+ {
+ FirstRunDelay = TimeSpan.FromHours(1);
+ }
+
+ /// <summary>
/// Stars waiting for the trigger action
/// </summary>
+ /// <param name="lastResult">The last result.</param>
/// <param name="isApplicationStartup">if set to <c>true</c> [is application startup].</param>
- public void Start(bool isApplicationStartup)
+ public void Start(TaskResult lastResult, bool isApplicationStartup)
{
DisposeTimer();
- Timer = new Timer(state => OnTriggered(), null, Interval, TimeSpan.FromMilliseconds(-1));
+ var triggerDate = lastResult != null ?
+ lastResult.EndTimeUtc.Add(Interval) :
+ DateTime.UtcNow.Add(FirstRunDelay);
+
+ if (DateTime.UtcNow > triggerDate)
+ {
+ if (isApplicationStartup)
+ {
+ triggerDate = DateTime.UtcNow.AddMinutes(5);
+ }
+ else
+ {
+ triggerDate = DateTime.UtcNow.Add(Interval);
+ }
+ }
+
+ Timer = new Timer(state => OnTriggered(), null, triggerDate - DateTime.UtcNow, TimeSpan.FromMilliseconds(-1));
}
/// <summary>
diff --git a/MediaBrowser.Common/ScheduledTasks/StartupTrigger.cs b/MediaBrowser.Common/ScheduledTasks/StartupTrigger.cs
index a58fa22b9..1d82dc76a 100644
--- a/MediaBrowser.Common/ScheduledTasks/StartupTrigger.cs
+++ b/MediaBrowser.Common/ScheduledTasks/StartupTrigger.cs
@@ -1,6 +1,7 @@
-using System;
+using MediaBrowser.Model.Events;
+using MediaBrowser.Model.Tasks;
+using System;
using System.Threading.Tasks;
-using MediaBrowser.Model.Events;
namespace MediaBrowser.Common.ScheduledTasks
{
@@ -27,8 +28,9 @@ namespace MediaBrowser.Common.ScheduledTasks
/// <summary>
/// Stars waiting for the trigger action
/// </summary>
+ /// <param name="lastResult">The last result.</param>
/// <param name="isApplicationStartup">if set to <c>true</c> [is application startup].</param>
- public async void Start(bool isApplicationStartup)
+ public async void Start(TaskResult lastResult, bool isApplicationStartup)
{
if (isApplicationStartup)
{
diff --git a/MediaBrowser.Common/ScheduledTasks/SystemEventTrigger.cs b/MediaBrowser.Common/ScheduledTasks/SystemEventTrigger.cs
index a40dc6b5c..eaf4afc75 100644
--- a/MediaBrowser.Common/ScheduledTasks/SystemEventTrigger.cs
+++ b/MediaBrowser.Common/ScheduledTasks/SystemEventTrigger.cs
@@ -1,8 +1,8 @@
-using MediaBrowser.Model.Tasks;
+using MediaBrowser.Model.Events;
+using MediaBrowser.Model.Tasks;
using Microsoft.Win32;
using System;
using System.Threading.Tasks;
-using MediaBrowser.Model.Events;
namespace MediaBrowser.Common.ScheduledTasks
{
@@ -28,8 +28,9 @@ namespace MediaBrowser.Common.ScheduledTasks
/// <summary>
/// Stars waiting for the trigger action
/// </summary>
+ /// <param name="lastResult">The last result.</param>
/// <param name="isApplicationStartup">if set to <c>true</c> [is application startup].</param>
- public void Start(bool isApplicationStartup)
+ public void Start(TaskResult lastResult, bool isApplicationStartup)
{
switch (SystemEvent)
{
diff --git a/MediaBrowser.Common/ScheduledTasks/WeeklyTrigger.cs b/MediaBrowser.Common/ScheduledTasks/WeeklyTrigger.cs
index a3818f83f..2e38264b2 100644
--- a/MediaBrowser.Common/ScheduledTasks/WeeklyTrigger.cs
+++ b/MediaBrowser.Common/ScheduledTasks/WeeklyTrigger.cs
@@ -1,6 +1,7 @@
using System;
using System.Threading;
using MediaBrowser.Model.Events;
+using MediaBrowser.Model.Tasks;
namespace MediaBrowser.Common.ScheduledTasks
{
@@ -38,8 +39,9 @@ namespace MediaBrowser.Common.ScheduledTasks
/// <summary>
/// Stars waiting for the trigger action
/// </summary>
+ /// <param name="lastResult">The last result.</param>
/// <param name="isApplicationStartup">if set to <c>true</c> [is application startup].</param>
- public void Start(bool isApplicationStartup)
+ public void Start(TaskResult lastResult, bool isApplicationStartup)
{
DisposeTimer();