aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Common.Implementations/ScheduledTasks/TaskManager.cs
diff options
context:
space:
mode:
authorLuke Pulverenti <luke.pulverenti@gmail.com>2016-02-03 15:52:45 -0500
committerLuke Pulverenti <luke.pulverenti@gmail.com>2016-02-03 15:52:45 -0500
commit6cb1f77789171f4be7a4c6cd9e075eb4e8b6eff0 (patch)
treec094a0149457dcd3d91669b5b0869491ac91cba9 /MediaBrowser.Common.Implementations/ScheduledTasks/TaskManager.cs
parent89a3a77110ac864f13e8b61b7e95a58f10315298 (diff)
update upgrade process
Diffstat (limited to 'MediaBrowser.Common.Implementations/ScheduledTasks/TaskManager.cs')
-rw-r--r--MediaBrowser.Common.Implementations/ScheduledTasks/TaskManager.cs53
1 files changed, 52 insertions, 1 deletions
diff --git a/MediaBrowser.Common.Implementations/ScheduledTasks/TaskManager.cs b/MediaBrowser.Common.Implementations/ScheduledTasks/TaskManager.cs
index 845c984fb..b5566650c 100644
--- a/MediaBrowser.Common.Implementations/ScheduledTasks/TaskManager.cs
+++ b/MediaBrowser.Common.Implementations/ScheduledTasks/TaskManager.cs
@@ -55,6 +55,25 @@ namespace MediaBrowser.Common.Implementations.ScheduledTasks
private ILogger Logger { get; set; }
private readonly IFileSystem _fileSystem;
+ private bool _suspendTriggers;
+
+ public bool SuspendTriggers
+ {
+ get { return _suspendTriggers; }
+ set
+ {
+ Logger.Info("Setting SuspendTriggers to {0}", value);
+ var executeQueued = _suspendTriggers && !value;
+
+ _suspendTriggers = value;
+
+ if (executeQueued)
+ {
+ ExecuteQueuedTasks();
+ }
+ }
+ }
+
/// <summary>
/// Initializes a new instance of the <see cref="TaskManager" /> class.
/// </summary>
@@ -151,6 +170,31 @@ namespace MediaBrowser.Common.Implementations.ScheduledTasks
QueueScheduledTask<T>(new TaskExecutionOptions());
}
+ public void Execute<T>()
+ where T : IScheduledTask
+ {
+ var scheduledTask = ScheduledTasks.FirstOrDefault(t => t.ScheduledTask.GetType() == typeof(T));
+
+ if (scheduledTask == null)
+ {
+ Logger.Error("Unable to find scheduled task of type {0} in Execute.", typeof(T).Name);
+ }
+ else
+ {
+ var type = scheduledTask.ScheduledTask.GetType();
+
+ Logger.Info("Queueing task {0}", type.Name);
+
+ lock (_taskQueue)
+ {
+ if (scheduledTask.State == TaskState.Idle)
+ {
+ Execute(scheduledTask, new TaskExecutionOptions());
+ }
+ }
+ }
+ }
+
/// <summary>
/// Queues the scheduled task.
/// </summary>
@@ -183,7 +227,7 @@ namespace MediaBrowser.Common.Implementations.ScheduledTasks
lock (_taskQueue)
{
- if (task.State == TaskState.Idle)
+ if (task.State == TaskState.Idle && !SuspendTriggers)
{
Execute(task, options);
return;
@@ -273,6 +317,13 @@ namespace MediaBrowser.Common.Implementations.ScheduledTasks
/// </summary>
private void ExecuteQueuedTasks()
{
+ if (SuspendTriggers)
+ {
+ return;
+ }
+
+ Logger.Info("ExecuteQueuedTasks");
+
// Execute queued tasks
lock (_taskQueue)
{