aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Common.Implementations/ScheduledTasks
diff options
context:
space:
mode:
authorLukePulverenti <luke.pulverenti@gmail.com>2013-03-07 00:34:00 -0500
committerLukePulverenti <luke.pulverenti@gmail.com>2013-03-07 00:34:00 -0500
commit4f67fc4aefc11c1a4293227c70de922dbe03c652 (patch)
tree67af7ffa36b002969968e06467c624def3e97dc6 /MediaBrowser.Common.Implementations/ScheduledTasks
parent60545c433b7d383147adb57bb91e720c3b547054 (diff)
removed base kernel and ikernel
Diffstat (limited to 'MediaBrowser.Common.Implementations/ScheduledTasks')
-rw-r--r--MediaBrowser.Common.Implementations/ScheduledTasks/ScheduledTaskWorker.cs28
-rw-r--r--MediaBrowser.Common.Implementations/ScheduledTasks/TaskManager.cs73
-rw-r--r--MediaBrowser.Common.Implementations/ScheduledTasks/Tasks/SystemUpdateTask.cs13
3 files changed, 40 insertions, 74 deletions
diff --git a/MediaBrowser.Common.Implementations/ScheduledTasks/ScheduledTaskWorker.cs b/MediaBrowser.Common.Implementations/ScheduledTasks/ScheduledTaskWorker.cs
index d5adf32658..f57d48f07a 100644
--- a/MediaBrowser.Common.Implementations/ScheduledTasks/ScheduledTaskWorker.cs
+++ b/MediaBrowser.Common.Implementations/ScheduledTasks/ScheduledTaskWorker.cs
@@ -1,6 +1,5 @@
using MediaBrowser.Common.Configuration;
using MediaBrowser.Common.Extensions;
-using MediaBrowser.Common.Kernel;
using MediaBrowser.Common.ScheduledTasks;
using MediaBrowser.Model.Logging;
using MediaBrowser.Model.Serialization;
@@ -50,12 +49,6 @@ namespace MediaBrowser.Common.Implementations.ScheduledTasks
private ITaskManager TaskManager { get; set; }
/// <summary>
- /// Gets or sets the server manager.
- /// </summary>
- /// <value>The server manager.</value>
- private IServerManager ServerManager { get; set; }
-
- /// <summary>
/// Initializes a new instance of the <see cref="ScheduledTaskWorker" /> class.
/// </summary>
/// <param name="scheduledTask">The scheduled task.</param>
@@ -64,7 +57,7 @@ namespace MediaBrowser.Common.Implementations.ScheduledTasks
/// <param name="jsonSerializer">The json serializer.</param>
/// <param name="logger">The logger.</param>
/// <param name="serverManager">The server manager.</param>
- public ScheduledTaskWorker(IScheduledTask scheduledTask, IApplicationPaths applicationPaths, ITaskManager taskManager, IJsonSerializer jsonSerializer, ILogger logger, IServerManager serverManager)
+ public ScheduledTaskWorker(IScheduledTask scheduledTask, IApplicationPaths applicationPaths, ITaskManager taskManager, IJsonSerializer jsonSerializer, ILogger logger)
{
if (scheduledTask == null)
{
@@ -86,17 +79,12 @@ namespace MediaBrowser.Common.Implementations.ScheduledTasks
{
throw new ArgumentNullException("logger");
}
- if (serverManager == null)
- {
- throw new ArgumentNullException("serverManager");
- }
ScheduledTask = scheduledTask;
ApplicationPaths = applicationPaths;
TaskManager = taskManager;
JsonSerializer = jsonSerializer;
Logger = logger;
- ServerManager = serverManager;
ReloadTriggerEvents(true);
}
@@ -331,6 +319,8 @@ namespace MediaBrowser.Common.Implementations.ScheduledTasks
Logger.Info("Executing {0}", Name);
+ ((TaskManager)TaskManager).OnTaskExecuting(ScheduledTask);
+
var progress = new Progress<double>();
progress.ProgressChanged += progress_ProgressChanged;
@@ -338,8 +328,6 @@ namespace MediaBrowser.Common.Implementations.ScheduledTasks
TaskCompletionStatus status;
CurrentExecutionStartTime = DateTime.UtcNow;
- ServerManager.SendWebSocketMessage("ScheduledTaskBeginExecute", Name);
-
try
{
await ExecuteTask(CurrentCancellationTokenSource.Token, progress).ConfigureAwait(false);
@@ -517,8 +505,7 @@ 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>
- /// <param name="sendNotification">if set to <c>true</c> [send notification].</param>
- private void OnTaskCompleted(DateTime startTime, DateTime endTime, TaskCompletionStatus status, bool sendNotification = true)
+ private void OnTaskCompleted(DateTime startTime, DateTime endTime, TaskCompletionStatus status)
{
var elapsedTime = endTime - startTime;
@@ -537,10 +524,7 @@ namespace MediaBrowser.Common.Implementations.ScheduledTasks
LastExecutionResult = result;
- if (sendNotification)
- {
- ServerManager.SendWebSocketMessage("ScheduledTaskEndExecute", result);
- }
+ ((TaskManager) TaskManager).OnTaskCompleted(ScheduledTask, result);
}
/// <summary>
@@ -564,7 +548,7 @@ namespace MediaBrowser.Common.Implementations.ScheduledTasks
if (State == TaskState.Running)
{
- OnTaskCompleted(CurrentExecutionStartTime, DateTime.UtcNow, TaskCompletionStatus.Aborted, false);
+ OnTaskCompleted(CurrentExecutionStartTime, DateTime.UtcNow, TaskCompletionStatus.Aborted);
}
if (CurrentCancellationTokenSource != null)
diff --git a/MediaBrowser.Common.Implementations/ScheduledTasks/TaskManager.cs b/MediaBrowser.Common.Implementations/ScheduledTasks/TaskManager.cs
index 946887303c..61e1f63299 100644
--- a/MediaBrowser.Common.Implementations/ScheduledTasks/TaskManager.cs
+++ b/MediaBrowser.Common.Implementations/ScheduledTasks/TaskManager.cs
@@ -1,5 +1,6 @@
-using MediaBrowser.Common.Configuration;
-using MediaBrowser.Common.Kernel;
+using System.Threading.Tasks;
+using MediaBrowser.Common.Configuration;
+using MediaBrowser.Common.Events;
using MediaBrowser.Common.ScheduledTasks;
using MediaBrowser.Model.Logging;
using MediaBrowser.Model.Serialization;
@@ -15,6 +16,9 @@ namespace MediaBrowser.Common.Implementations.ScheduledTasks
/// </summary>
public class TaskManager : ITaskManager
{
+ public event EventHandler<EventArgs> TaskExecuting;
+ public event EventHandler<GenericEventArgs<TaskResult>> TaskCompleted;
+
/// <summary>
/// Gets the list of Scheduled Tasks
/// </summary>
@@ -45,25 +49,17 @@ namespace MediaBrowser.Common.Implementations.ScheduledTasks
private ILogger Logger { get; set; }
/// <summary>
- /// Gets or sets the server manager.
- /// </summary>
- /// <value>The server manager.</value>
- private IServerManager ServerManager { get; set; }
-
- /// <summary>
/// Initializes a new instance of the <see cref="TaskManager" /> class.
/// </summary>
/// <param name="applicationPaths">The application paths.</param>
/// <param name="jsonSerializer">The json serializer.</param>
/// <param name="logger">The logger.</param>
- /// <param name="serverManager">The server manager.</param>
/// <exception cref="System.ArgumentException">kernel</exception>
- public TaskManager(IApplicationPaths applicationPaths, IJsonSerializer jsonSerializer, ILogger logger, IServerManager serverManager)
+ public TaskManager(IApplicationPaths applicationPaths, IJsonSerializer jsonSerializer, ILogger logger)
{
ApplicationPaths = applicationPaths;
JsonSerializer = jsonSerializer;
Logger = logger;
- ServerManager = serverManager;
ScheduledTasks = new IScheduledTaskWorker[] { };
}
@@ -75,7 +71,9 @@ namespace MediaBrowser.Common.Implementations.ScheduledTasks
public void CancelIfRunningAndQueue<T>()
where T : IScheduledTask
{
- ScheduledTasks.First(t => t.ScheduledTask.GetType() == typeof(T)).CancelIfRunning();
+ var task = ScheduledTasks.First(t => t.ScheduledTask.GetType() == typeof(T));
+ ((ScheduledTaskWorker)task).CancelIfRunning();
+
QueueScheduledTask<T>();
}
@@ -101,7 +99,7 @@ namespace MediaBrowser.Common.Implementations.ScheduledTasks
QueueScheduledTask(scheduledTask);
}
-
+
/// <summary>
/// Queues the scheduled task.
/// </summary>
@@ -115,7 +113,7 @@ namespace MediaBrowser.Common.Implementations.ScheduledTasks
// If it's idle just execute immediately
if (task.State == TaskState.Idle)
{
- task.Execute();
+ ((ScheduledTaskWorker)task).Execute();
return;
}
@@ -132,31 +130,6 @@ namespace MediaBrowser.Common.Implementations.ScheduledTasks
}
/// <summary>
- /// Called when [task completed].
- /// </summary>
- /// <param name="task">The task.</param>
- public void OnTaskCompleted(IScheduledTask task)
- {
- // Execute queued tasks
- lock (_taskQueue)
- {
- var copy = _taskQueue.ToList();
-
- foreach (var type in copy)
- {
- var scheduledTask = ScheduledTasks.First(t => t.GetType() == type);
-
- if (scheduledTask.State == TaskState.Idle)
- {
- scheduledTask.Execute();
-
- _taskQueue.Remove(type);
- }
- }
- }
- }
-
- /// <summary>
/// Adds the tasks.
/// </summary>
/// <param name="tasks">The tasks.</param>
@@ -164,7 +137,7 @@ namespace MediaBrowser.Common.Implementations.ScheduledTasks
{
var myTasks = ScheduledTasks.ToList();
- myTasks.AddRange(tasks.Select(t => new ScheduledTaskWorker(t, ApplicationPaths, this, JsonSerializer, Logger, ServerManager)));
+ myTasks.AddRange(tasks.Select(t => new ScheduledTaskWorker(t, ApplicationPaths, this, JsonSerializer, Logger)));
ScheduledTasks = myTasks.ToArray();
}
@@ -189,5 +162,25 @@ namespace MediaBrowser.Common.Implementations.ScheduledTasks
task.Dispose();
}
}
+
+ public void Cancel(IScheduledTaskWorker task)
+ {
+ ((ScheduledTaskWorker)task).Cancel();
+ }
+
+ public Task Execute(IScheduledTaskWorker task)
+ {
+ return ((ScheduledTaskWorker)task).Execute();
+ }
+
+ internal void OnTaskExecuting(IScheduledTask task)
+ {
+ EventHelper.QueueEventIfNotNull(TaskExecuting, task, EventArgs.Empty, Logger);
+ }
+
+ internal void OnTaskCompleted(IScheduledTask task, TaskResult result)
+ {
+ EventHelper.QueueEventIfNotNull(TaskExecuting, task, new GenericEventArgs<TaskResult> { Argument = result }, Logger);
+ }
}
}
diff --git a/MediaBrowser.Common.Implementations/ScheduledTasks/Tasks/SystemUpdateTask.cs b/MediaBrowser.Common.Implementations/ScheduledTasks/Tasks/SystemUpdateTask.cs
index 7da1b9c5a5..e74693f938 100644
--- a/MediaBrowser.Common.Implementations/ScheduledTasks/Tasks/SystemUpdateTask.cs
+++ b/MediaBrowser.Common.Implementations/ScheduledTasks/Tasks/SystemUpdateTask.cs
@@ -1,5 +1,4 @@
using MediaBrowser.Common.Configuration;
-using MediaBrowser.Common.Kernel;
using MediaBrowser.Common.ScheduledTasks;
using MediaBrowser.Model.Logging;
using System;
@@ -31,24 +30,16 @@ namespace MediaBrowser.Common.Implementations.ScheduledTasks.Tasks
private ILogger Logger { get; set; }
/// <summary>
- /// Gets or sets the kernel.
- /// </summary>
- /// <value>The kernel.</value>
- private IKernel Kernel { get; set; }
-
- /// <summary>
/// Initializes a new instance of the <see cref="SystemUpdateTask" /> class.
/// </summary>
/// <param name="appHost">The app host.</param>
/// <param name="configurationManager">The configuration manager.</param>
/// <param name="logger">The logger.</param>
- /// <param name="kernel">The kernel.</param>
- public SystemUpdateTask(IApplicationHost appHost, IConfigurationManager configurationManager, ILogger logger, IKernel kernel)
+ public SystemUpdateTask(IApplicationHost appHost, IConfigurationManager configurationManager, ILogger logger)
{
_appHost = appHost;
ConfigurationManager = configurationManager;
Logger = logger;
- Kernel = kernel;
}
/// <summary>
@@ -110,8 +101,6 @@ namespace MediaBrowser.Common.Implementations.ScheduledTasks.Tasks
// Release the event handler
innerProgress.ProgressChanged -= innerProgressHandler;
-
- Kernel.OnApplicationUpdated(updateInfo.AvailableVersion);
}
else
{