diff options
| author | LukePulverenti <luke.pulverenti@gmail.com> | 2013-03-07 00:34:00 -0500 |
|---|---|---|
| committer | LukePulverenti <luke.pulverenti@gmail.com> | 2013-03-07 00:34:00 -0500 |
| commit | 4f67fc4aefc11c1a4293227c70de922dbe03c652 (patch) | |
| tree | 67af7ffa36b002969968e06467c624def3e97dc6 /MediaBrowser.Common.Implementations/ScheduledTasks | |
| parent | 60545c433b7d383147adb57bb91e720c3b547054 (diff) | |
removed base kernel and ikernel
Diffstat (limited to 'MediaBrowser.Common.Implementations/ScheduledTasks')
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 { |
