aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Common.Implementations/ScheduledTasks/ScheduledTaskWorker.cs
diff options
context:
space:
mode:
authorLukePulverenti <luke.pulverenti@gmail.com>2013-02-28 14:32:41 -0500
committerLukePulverenti <luke.pulverenti@gmail.com>2013-02-28 14:32:41 -0500
commitaf7aa597c35279e286ee88641854db69744e7b15 (patch)
tree09cddf891558aed82f62bd5802fd9ff9ab21f116 /MediaBrowser.Common.Implementations/ScheduledTasks/ScheduledTaskWorker.cs
parent4435e83e696c9172b2dcb8a5d48d866f767a421c (diff)
referenced core plugins, fixed some dashboard issues, extracted library manager
Diffstat (limited to 'MediaBrowser.Common.Implementations/ScheduledTasks/ScheduledTaskWorker.cs')
-rw-r--r--MediaBrowser.Common.Implementations/ScheduledTasks/ScheduledTaskWorker.cs44
1 files changed, 39 insertions, 5 deletions
diff --git a/MediaBrowser.Common.Implementations/ScheduledTasks/ScheduledTaskWorker.cs b/MediaBrowser.Common.Implementations/ScheduledTasks/ScheduledTaskWorker.cs
index 4ecb8f0ef..e618b6f55 100644
--- a/MediaBrowser.Common.Implementations/ScheduledTasks/ScheduledTaskWorker.cs
+++ b/MediaBrowser.Common.Implementations/ScheduledTasks/ScheduledTaskWorker.cs
@@ -65,6 +65,31 @@ namespace MediaBrowser.Common.Implementations.ScheduledTasks
/// <param name="serverManager">The server manager.</param>
public ScheduledTaskWorker(IScheduledTask scheduledTask, IApplicationPaths applicationPaths, ITaskManager taskManager, IJsonSerializer jsonSerializer, ILogger logger, IServerManager serverManager)
{
+ if (scheduledTask == null)
+ {
+ throw new ArgumentNullException("scheduledTask");
+ }
+ if (applicationPaths == null)
+ {
+ throw new ArgumentNullException("applicationPaths");
+ }
+ if (taskManager == null)
+ {
+ throw new ArgumentNullException("taskManager");
+ }
+ if (jsonSerializer == null)
+ {
+ throw new ArgumentNullException("jsonSerializer");
+ }
+ if (logger == null)
+ {
+ throw new ArgumentNullException("logger");
+ }
+ if (serverManager == null)
+ {
+ throw new ArgumentNullException("serverManager");
+ }
+
ScheduledTask = scheduledTask;
ApplicationPaths = applicationPaths;
TaskManager = taskManager;
@@ -316,7 +341,7 @@ namespace MediaBrowser.Common.Implementations.ScheduledTasks
try
{
- await System.Threading.Tasks.Task.Run(async () => await ScheduledTask.Execute(CurrentCancellationTokenSource.Token, progress).ConfigureAwait(false)).ConfigureAwait(false);
+ await ExecuteTask(CurrentCancellationTokenSource.Token, progress).ConfigureAwait(false);
status = TaskCompletionStatus.Completed;
}
@@ -334,8 +359,6 @@ namespace MediaBrowser.Common.Implementations.ScheduledTasks
var startTime = CurrentExecutionStartTime;
var endTime = DateTime.UtcNow;
- ServerManager.SendWebSocketMessage("ScheduledTaskEndExecute", LastExecutionResult);
-
progress.ProgressChanged -= progress_ProgressChanged;
CurrentCancellationTokenSource.Dispose();
CurrentCancellationTokenSource = null;
@@ -344,6 +367,11 @@ namespace MediaBrowser.Common.Implementations.ScheduledTasks
OnTaskCompleted(startTime, endTime, status);
}
+ private Task ExecuteTask(CancellationToken cancellationToken, IProgress<double> progress)
+ {
+ return Task.Run(async () => await ScheduledTask.Execute(cancellationToken, progress).ConfigureAwait(false));
+ }
+
/// <summary>
/// Progress_s the progress changed.
/// </summary>
@@ -482,7 +510,8 @@ namespace MediaBrowser.Common.Implementations.ScheduledTasks
/// <param name="startTime">The start time.</param>
/// <param name="endTime">The end time.</param>
/// <param name="status">The status.</param>
- private void OnTaskCompleted(DateTime startTime, DateTime endTime, TaskCompletionStatus status)
+ /// <param name="sendNotification">if set to <c>true</c> [send notification].</param>
+ private void OnTaskCompleted(DateTime startTime, DateTime endTime, TaskCompletionStatus status, bool sendNotification = true)
{
var elapsedTime = endTime - startTime;
@@ -500,6 +529,11 @@ namespace MediaBrowser.Common.Implementations.ScheduledTasks
JsonSerializer.SerializeToFile(result, GetHistoryFilePath());
LastExecutionResult = result;
+
+ if (sendNotification)
+ {
+ ServerManager.SendWebSocketMessage("ScheduledTaskEndExecute", result);
+ }
}
/// <summary>
@@ -523,7 +557,7 @@ namespace MediaBrowser.Common.Implementations.ScheduledTasks
if (State == TaskState.Running)
{
- OnTaskCompleted(CurrentExecutionStartTime, DateTime.UtcNow, TaskCompletionStatus.Aborted);
+ OnTaskCompleted(CurrentExecutionStartTime, DateTime.UtcNow, TaskCompletionStatus.Aborted, false);
}
if (CurrentCancellationTokenSource != null)