Prototype 2 of max task length for scheduled tasks.

This commit is contained in:
Mike
2015-02-25 15:55:01 -05:00
parent 17ea0217f5
commit 5b9999eccf
11 changed files with 124 additions and 37 deletions

View File

@@ -86,6 +86,7 @@
<Compile Include="ScheduledTasks\DailyTrigger.cs" />
<Compile Include="ScheduledTasks\IntervalTrigger.cs" />
<Compile Include="ScheduledTasks\TaskCompletionEventArgs.cs" />
<Compile Include="ScheduledTasks\TaskExecutionOptions.cs" />
<Compile Include="ScheduledTasks\WeeklyTrigger.cs" />
<Compile Include="Security\IRequiresRegistration.cs" />
<Compile Include="Security\ISecurityManager.cs" />

View File

@@ -1,5 +1,6 @@
using System;
using System.Threading;
using MediaBrowser.Model.Events;
namespace MediaBrowser.Common.ScheduledTasks
{
@@ -20,6 +21,14 @@ namespace MediaBrowser.Common.ScheduledTasks
/// <value>The timer.</value>
private Timer Timer { get; set; }
/// <summary>
/// Gets the execution properties of this task.
/// </summary>
/// <value>
/// The execution properties of this task.
/// </value>
public TaskExecutionOptions TaskOptions { get; set; }
/// <summary>
/// Stars waiting for the trigger action
/// </summary>
@@ -58,7 +67,7 @@ namespace MediaBrowser.Common.ScheduledTasks
/// <summary>
/// Occurs when [triggered].
/// </summary>
public event EventHandler<EventArgs> Triggered;
public event EventHandler<GenericEventArgs<TaskExecutionOptions>> Triggered;
/// <summary>
/// Called when [triggered].
@@ -67,7 +76,7 @@ namespace MediaBrowser.Common.ScheduledTasks
{
if (Triggered != null)
{
Triggered(this, EventArgs.Empty);
Triggered(this, new GenericEventArgs<TaskExecutionOptions>(TaskOptions));
}
}
}

View File

@@ -17,7 +17,8 @@ namespace MediaBrowser.Common.ScheduledTasks
/// Cancels if running and queue.
/// </summary>
/// <typeparam name="T"></typeparam>
void CancelIfRunningAndQueue<T>()
/// <param name="options">Task options.</param>
void CancelIfRunningAndQueue<T>(TaskExecutionOptions options = null)
where T : IScheduledTask;
/// <summary>
@@ -31,14 +32,16 @@ namespace MediaBrowser.Common.ScheduledTasks
/// Queues the scheduled task.
/// </summary>
/// <typeparam name="T"></typeparam>
void QueueScheduledTask<T>()
/// <param name="options">Task options.</param>
void QueueScheduledTask<T>(TaskExecutionOptions options = null)
where T : IScheduledTask;
/// <summary>
/// Queues the scheduled task.
/// </summary>
/// <param name="task">The task.</param>
void QueueScheduledTask(IScheduledTask task);
/// <param name="options">The task run options.</param>
void QueueScheduledTask(IScheduledTask task, TaskExecutionOptions options = null);
/// <summary>
/// Adds the tasks.
@@ -47,7 +50,7 @@ namespace MediaBrowser.Common.ScheduledTasks
void AddTasks(IEnumerable<IScheduledTask> tasks);
void Cancel(IScheduledTaskWorker task);
Task Execute(IScheduledTaskWorker task);
Task Execute(IScheduledTaskWorker task, TaskExecutionOptions options = null);
event EventHandler<GenericEventArgs<IScheduledTaskWorker>> TaskExecuting;
event EventHandler<TaskCompletionEventArgs> TaskCompleted;

View File

@@ -1,4 +1,5 @@
using System;
using MediaBrowser.Model.Events;
namespace MediaBrowser.Common.ScheduledTasks
{
@@ -10,7 +11,7 @@ namespace MediaBrowser.Common.ScheduledTasks
/// <summary>
/// Fires when the trigger condition is satisfied and the task should run
/// </summary>
event EventHandler<EventArgs> Triggered;
event EventHandler<GenericEventArgs<TaskExecutionOptions>> Triggered;
/// <summary>
/// Stars waiting for the trigger action
@@ -22,5 +23,13 @@ namespace MediaBrowser.Common.ScheduledTasks
/// Stops waiting for the trigger action
/// </summary>
void Stop();
/// <summary>
/// Gets or sets the execution properties of this task.
/// </summary>
/// <value>
/// The execution properties of this task.
/// </value>
TaskExecutionOptions TaskOptions { get; set; }
}
}

View File

@@ -1,5 +1,6 @@
using System;
using System.Threading;
using MediaBrowser.Model.Events;
namespace MediaBrowser.Common.ScheduledTasks
{
@@ -20,6 +21,14 @@ namespace MediaBrowser.Common.ScheduledTasks
/// <value>The timer.</value>
private Timer Timer { get; set; }
/// <summary>
/// Gets the execution properties of this task.
/// </summary>
/// <value>
/// The execution properties of this task.
/// </value>
public TaskExecutionOptions TaskOptions { get; set; }
/// <summary>
/// Stars waiting for the trigger action
/// </summary>
@@ -53,7 +62,7 @@ namespace MediaBrowser.Common.ScheduledTasks
/// <summary>
/// Occurs when [triggered].
/// </summary>
public event EventHandler<EventArgs> Triggered;
public event EventHandler<GenericEventArgs<TaskExecutionOptions>> Triggered;
/// <summary>
/// Called when [triggered].
@@ -62,7 +71,7 @@ namespace MediaBrowser.Common.ScheduledTasks
{
if (Triggered != null)
{
Triggered(this, EventArgs.Empty);
Triggered(this, new GenericEventArgs<TaskExecutionOptions>(TaskOptions));
}
}
}

View File

@@ -1,5 +1,6 @@
using System;
using System.Threading.Tasks;
using MediaBrowser.Model.Events;
namespace MediaBrowser.Common.ScheduledTasks
{
@@ -10,6 +11,14 @@ namespace MediaBrowser.Common.ScheduledTasks
{
public int DelayMs { get; set; }
/// <summary>
/// Gets the execution properties of this task.
/// </summary>
/// <value>
/// The execution properties of this task.
/// </value>
public TaskExecutionOptions TaskOptions { get; set; }
public StartupTrigger()
{
DelayMs = 3000;
@@ -39,7 +48,7 @@ namespace MediaBrowser.Common.ScheduledTasks
/// <summary>
/// Occurs when [triggered].
/// </summary>
public event EventHandler<EventArgs> Triggered;
public event EventHandler<GenericEventArgs<TaskExecutionOptions>> Triggered;
/// <summary>
/// Called when [triggered].
@@ -48,7 +57,7 @@ namespace MediaBrowser.Common.ScheduledTasks
{
if (Triggered != null)
{
Triggered(this, EventArgs.Empty);
Triggered(this, new GenericEventArgs<TaskExecutionOptions>(TaskOptions));
}
}
}

View File

@@ -2,6 +2,7 @@
using Microsoft.Win32;
using System;
using System.Threading.Tasks;
using MediaBrowser.Model.Events;
namespace MediaBrowser.Common.ScheduledTasks
{
@@ -16,6 +17,14 @@ namespace MediaBrowser.Common.ScheduledTasks
/// <value>The system event.</value>
public SystemEvent SystemEvent { get; set; }
/// <summary>
/// Gets the execution properties of this task.
/// </summary>
/// <value>
/// The execution properties of this task.
/// </value>
public TaskExecutionOptions TaskOptions { get; set; }
/// <summary>
/// Stars waiting for the trigger action
/// </summary>
@@ -57,7 +66,7 @@ namespace MediaBrowser.Common.ScheduledTasks
/// <summary>
/// Occurs when [triggered].
/// </summary>
public event EventHandler<EventArgs> Triggered;
public event EventHandler<GenericEventArgs<TaskExecutionOptions>> Triggered;
/// <summary>
/// Called when [triggered].
@@ -66,7 +75,7 @@ namespace MediaBrowser.Common.ScheduledTasks
{
if (Triggered != null)
{
Triggered(this, EventArgs.Empty);
Triggered(this, new GenericEventArgs<TaskExecutionOptions>(TaskOptions));
}
}
}

View File

@@ -0,0 +1,16 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace MediaBrowser.Common.ScheduledTasks
{
/// <summary>
/// A class that encomposases all common task run properties.
/// </summary>
public class TaskExecutionOptions
{
public int? MaxRuntimeMs { get; set; }
}
}

View File

@@ -1,5 +1,6 @@
using System;
using System.Threading;
using MediaBrowser.Model.Events;
namespace MediaBrowser.Common.ScheduledTasks
{
@@ -20,6 +21,14 @@ namespace MediaBrowser.Common.ScheduledTasks
/// <value>The day of week.</value>
public DayOfWeek DayOfWeek { get; set; }
/// <summary>
/// Gets the execution properties of this task.
/// </summary>
/// <value>
/// The execution properties of this task.
/// </value>
public TaskExecutionOptions TaskOptions { get; set; }
/// <summary>
/// Gets or sets the timer.
/// </summary>
@@ -88,7 +97,7 @@ namespace MediaBrowser.Common.ScheduledTasks
/// <summary>
/// Occurs when [triggered].
/// </summary>
public event EventHandler<EventArgs> Triggered;
public event EventHandler<GenericEventArgs<TaskExecutionOptions>> Triggered;
/// <summary>
/// Called when [triggered].
@@ -97,7 +106,7 @@ namespace MediaBrowser.Common.ScheduledTasks
{
if (Triggered != null)
{
Triggered(this, EventArgs.Empty);
Triggered(this, new GenericEventArgs<TaskExecutionOptions>(TaskOptions));
}
}
}