diff options
| author | LukePulverenti <luke.pulverenti@gmail.com> | 2013-02-23 10:32:54 -0500 |
|---|---|---|
| committer | LukePulverenti <luke.pulverenti@gmail.com> | 2013-02-23 10:32:54 -0500 |
| commit | 33ed929b526acbda696f00f5966917ebd6a9ded2 (patch) | |
| tree | 18e75812ce71274a3e02f800536e8c144f4e5c45 /MediaBrowser.Common/ScheduledTasks/TaskManager.cs | |
| parent | 02634588710f65ce952d0229d7da6b9c9d341492 (diff) | |
| parent | e30b96217333cadb78dcc0a47545afd145c683a7 (diff) | |
Merge branch 'master' of https://github.com/MediaBrowser/MediaBrowser
Conflicts:
MediaBrowser.ServerApplication/CorePlugins/MediaBrowser.Api.dll
MediaBrowser.ServerApplication/CorePlugins/MediaBrowser.ApiInteraction.Javascript.dll
MediaBrowser.ServerApplication/CorePlugins/MediaBrowser.Server.Sqlite.dll
MediaBrowser.ServerApplication/CorePlugins/MediaBrowser.Server.WorldWeatherOnline.dll
MediaBrowser.ServerApplication/CorePlugins/MediaBrowser.WebDashboard.dll
Diffstat (limited to 'MediaBrowser.Common/ScheduledTasks/TaskManager.cs')
| -rw-r--r-- | MediaBrowser.Common/ScheduledTasks/TaskManager.cs | 66 |
1 files changed, 55 insertions, 11 deletions
diff --git a/MediaBrowser.Common/ScheduledTasks/TaskManager.cs b/MediaBrowser.Common/ScheduledTasks/TaskManager.cs index b71ab8161..946c42d2e 100644 --- a/MediaBrowser.Common/ScheduledTasks/TaskManager.cs +++ b/MediaBrowser.Common/ScheduledTasks/TaskManager.cs @@ -1,5 +1,4 @@ -using MediaBrowser.Common.Kernel; -using MediaBrowser.Model.Logging; +using MediaBrowser.Model.Logging; using MediaBrowser.Model.Tasks; using System; using System.Collections.Generic; @@ -10,9 +9,15 @@ namespace MediaBrowser.Common.ScheduledTasks /// <summary> /// Class TaskManager /// </summary> - public class TaskManager : BaseManager<IKernel> + internal class TaskManager : ITaskManager { /// <summary> + /// Gets the list of Scheduled Tasks + /// </summary> + /// <value>The scheduled tasks.</value> + public IScheduledTask[] ScheduledTasks { get; private set; } + + /// <summary> /// The _task queue /// </summary> private readonly List<Type> _taskQueue = new List<Type>(); @@ -25,12 +30,17 @@ namespace MediaBrowser.Common.ScheduledTasks /// <summary> /// Initializes a new instance of the <see cref="TaskManager" /> class. /// </summary> - /// <param name="kernel">The kernel.</param> /// <param name="logger">The logger.</param> - public TaskManager(IKernel kernel, ILogger logger) - : base(kernel) + public TaskManager(ILogger logger) { + if (logger == null) + { + throw new ArgumentException("logger"); + } + _logger = logger; + + ScheduledTasks = new IScheduledTask[] {}; } /// <summary> @@ -40,7 +50,7 @@ namespace MediaBrowser.Common.ScheduledTasks public void CancelIfRunningAndQueue<T>() where T : IScheduledTask { - Kernel.ScheduledTasks.OfType<T>().First().CancelIfRunning(); + ScheduledTasks.OfType<T>().First().CancelIfRunning(); QueueScheduledTask<T>(); } @@ -51,7 +61,7 @@ namespace MediaBrowser.Common.ScheduledTasks public void QueueScheduledTask<T>() where T : IScheduledTask { - var scheduledTask = Kernel.ScheduledTasks.OfType<T>().First(); + var scheduledTask = ScheduledTasks.OfType<T>().First(); QueueScheduledTask(scheduledTask); } @@ -64,7 +74,7 @@ namespace MediaBrowser.Common.ScheduledTasks { var type = task.GetType(); - var scheduledTask = Kernel.ScheduledTasks.First(t => t.GetType() == type); + var scheduledTask = ScheduledTasks.First(t => t.GetType() == type); lock (_taskQueue) { @@ -91,7 +101,7 @@ namespace MediaBrowser.Common.ScheduledTasks /// Called when [task completed]. /// </summary> /// <param name="task">The task.</param> - internal void OnTaskCompleted(IScheduledTask task) + public void OnTaskCompleted(IScheduledTask task) { // Execute queued tasks lock (_taskQueue) @@ -100,7 +110,7 @@ namespace MediaBrowser.Common.ScheduledTasks foreach (var type in copy) { - var scheduledTask = Kernel.ScheduledTasks.First(t => t.GetType() == type); + var scheduledTask = ScheduledTasks.First(t => t.GetType() == type); if (scheduledTask.State == TaskState.Idle) { @@ -111,5 +121,39 @@ namespace MediaBrowser.Common.ScheduledTasks } } } + + /// <summary> + /// Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. + /// </summary> + public void Dispose() + { + Dispose(true); + GC.SuppressFinalize(this); + } + + /// <summary> + /// Releases unmanaged and - optionally - managed resources. + /// </summary> + /// <param name="dispose"><c>true</c> to release both managed and unmanaged resources; <c>false</c> to release only unmanaged resources.</param> + protected virtual void Dispose(bool dispose) + { + foreach (var task in ScheduledTasks) + { + task.Dispose(); + } + } + + /// <summary> + /// Adds the tasks. + /// </summary> + /// <param name="tasks">The tasks.</param> + public void AddTasks(IEnumerable<IScheduledTask> tasks) + { + var myTasks = ScheduledTasks.ToList(); + + myTasks.AddRange(tasks); + + ScheduledTasks = myTasks.ToArray(); + } } } |
