diff options
Diffstat (limited to 'MediaBrowser.Common.Implementations/ScheduledTasks')
| -rw-r--r-- | MediaBrowser.Common.Implementations/ScheduledTasks/ScheduledTaskWorker.cs | 32 | ||||
| -rw-r--r-- | MediaBrowser.Common.Implementations/ScheduledTasks/TaskManager.cs | 30 | ||||
| -rw-r--r-- | MediaBrowser.Common.Implementations/ScheduledTasks/Tasks/DeleteCacheFileTask.cs | 6 | ||||
| -rw-r--r-- | MediaBrowser.Common.Implementations/ScheduledTasks/Tasks/ReloadLoggerFileTask.cs (renamed from MediaBrowser.Common.Implementations/ScheduledTasks/Tasks/ReloadLoggerTask.cs) | 0 |
4 files changed, 46 insertions, 22 deletions
diff --git a/MediaBrowser.Common.Implementations/ScheduledTasks/ScheduledTaskWorker.cs b/MediaBrowser.Common.Implementations/ScheduledTasks/ScheduledTaskWorker.cs index 8f3f9b0a6..68222d843 100644 --- a/MediaBrowser.Common.Implementations/ScheduledTasks/ScheduledTaskWorker.cs +++ b/MediaBrowser.Common.Implementations/ScheduledTasks/ScheduledTaskWorker.cs @@ -1,6 +1,8 @@ using MediaBrowser.Common.Configuration; +using MediaBrowser.Common.Events; using MediaBrowser.Common.Extensions; using MediaBrowser.Common.ScheduledTasks; +using MediaBrowser.Model.Events; using MediaBrowser.Model.Logging; using MediaBrowser.Model.Serialization; using MediaBrowser.Model.Tasks; @@ -18,6 +20,8 @@ namespace MediaBrowser.Common.Implementations.ScheduledTasks /// </summary> public class ScheduledTaskWorker : IScheduledTaskWorker { + public event EventHandler<GenericEventArgs<double>> TaskProgress; + /// <summary> /// Gets or sets the scheduled task. /// </summary> @@ -269,22 +273,22 @@ namespace MediaBrowser.Common.Implementations.ScheduledTasks /// <summary> /// The _id /// </summary> - private Guid? _id; + private string _id; /// <summary> /// Gets the unique id. /// </summary> /// <value>The unique id.</value> - public Guid Id + public string Id { get { - if (!_id.HasValue) + if (_id == null) { - _id = ScheduledTask.GetType().FullName.GetMD5(); + _id = ScheduledTask.GetType().FullName.GetMD5().ToString("N"); } - return _id.Value; + return _id; } } @@ -344,13 +348,13 @@ namespace MediaBrowser.Common.Implementations.ScheduledTasks throw new InvalidOperationException("Cannot execute a Task that is already running"); } + var progress = new Progress<double>(); + CurrentCancellationTokenSource = new CancellationTokenSource(); Logger.Info("Executing {0}", Name); - ((TaskManager)TaskManager).OnTaskExecuting(ScheduledTask); - - var progress = new Progress<double>(); + ((TaskManager)TaskManager).OnTaskExecuting(this); progress.ProgressChanged += progress_ProgressChanged; @@ -412,6 +416,12 @@ namespace MediaBrowser.Common.Implementations.ScheduledTasks void progress_ProgressChanged(object sender, double e) { CurrentProgress = e; + + EventHelper.FireEventIfNotNull(TaskProgress, this, new GenericEventArgs<double> + { + Argument = e + + }, Logger); } /// <summary> @@ -464,7 +474,7 @@ namespace MediaBrowser.Common.Implementations.ScheduledTasks /// <value>The history file path.</value> private string GetHistoryFilePath() { - return Path.Combine(GetScheduledTasksDataDirectory(), Id + ".js"); + return Path.Combine(GetScheduledTasksDataDirectory(), new Guid(Id) + ".js"); } /// <summary> @@ -473,7 +483,7 @@ namespace MediaBrowser.Common.Implementations.ScheduledTasks /// <returns>System.String.</returns> private string GetConfigurationFilePath() { - return Path.Combine(GetScheduledTasksConfigurationDirectory(), Id + ".js"); + return Path.Combine(GetScheduledTasksConfigurationDirectory(), new Guid(Id) + ".js"); } /// <summary> @@ -546,7 +556,7 @@ namespace MediaBrowser.Common.Implementations.ScheduledTasks LastExecutionResult = result; - ((TaskManager) TaskManager).OnTaskCompleted(ScheduledTask, result); + ((TaskManager)TaskManager).OnTaskCompleted(this, result); } /// <summary> diff --git a/MediaBrowser.Common.Implementations/ScheduledTasks/TaskManager.cs b/MediaBrowser.Common.Implementations/ScheduledTasks/TaskManager.cs index 6605432fa..5aec39b89 100644 --- a/MediaBrowser.Common.Implementations/ScheduledTasks/TaskManager.cs +++ b/MediaBrowser.Common.Implementations/ScheduledTasks/TaskManager.cs @@ -1,6 +1,7 @@ using MediaBrowser.Common.Configuration; using MediaBrowser.Common.Events; using MediaBrowser.Common.ScheduledTasks; +using MediaBrowser.Model.Events; using MediaBrowser.Model.Logging; using MediaBrowser.Model.Serialization; using MediaBrowser.Model.Tasks; @@ -16,8 +17,8 @@ namespace MediaBrowser.Common.Implementations.ScheduledTasks /// </summary> public class TaskManager : ITaskManager { - public event EventHandler<EventArgs> TaskExecuting; - public event EventHandler<GenericEventArgs<TaskResult>> TaskCompleted; + public event EventHandler<GenericEventArgs<IScheduledTaskWorker>> TaskExecuting; + public event EventHandler<TaskCompletionEventArgs> TaskCompleted; /// <summary> /// Gets the list of Scheduled Tasks @@ -124,7 +125,7 @@ namespace MediaBrowser.Common.Implementations.ScheduledTasks // If it's idle just execute immediately if (task.State == TaskState.Idle) { - ((ScheduledTaskWorker)task).Execute(); + Execute(task); return; } @@ -148,7 +149,8 @@ namespace MediaBrowser.Common.Implementations.ScheduledTasks { var myTasks = ScheduledTasks.ToList(); - myTasks.AddRange(tasks.Select(t => new ScheduledTaskWorker(t, ApplicationPaths, this, JsonSerializer, Logger))); + var list = tasks.ToList(); + myTasks.AddRange(list.Select(t => new ScheduledTaskWorker(t, ApplicationPaths, this, JsonSerializer, Logger))); ScheduledTasks = myTasks.ToArray(); } @@ -188,9 +190,13 @@ namespace MediaBrowser.Common.Implementations.ScheduledTasks /// Called when [task executing]. /// </summary> /// <param name="task">The task.</param> - internal void OnTaskExecuting(IScheduledTask task) + internal void OnTaskExecuting(IScheduledTaskWorker task) { - EventHelper.QueueEventIfNotNull(TaskExecuting, task, EventArgs.Empty, Logger); + EventHelper.QueueEventIfNotNull(TaskExecuting, this, new GenericEventArgs<IScheduledTaskWorker> + { + Argument = task + + }, Logger); } /// <summary> @@ -198,9 +204,15 @@ namespace MediaBrowser.Common.Implementations.ScheduledTasks /// </summary> /// <param name="task">The task.</param> /// <param name="result">The result.</param> - internal void OnTaskCompleted(IScheduledTask task, TaskResult result) + internal void OnTaskCompleted(IScheduledTaskWorker task, TaskResult result) { - EventHelper.QueueEventIfNotNull(TaskCompleted, task, new GenericEventArgs<TaskResult> { Argument = result }, Logger); + EventHelper.QueueEventIfNotNull(TaskCompleted, task, new TaskCompletionEventArgs + { + Result = result, + Task = task + + }, Logger); + ExecuteQueuedTasks(); } @@ -218,7 +230,7 @@ namespace MediaBrowser.Common.Implementations.ScheduledTasks if (scheduledTask.State == TaskState.Idle) { - ((ScheduledTaskWorker)scheduledTask).Execute(); + Execute(scheduledTask); _taskQueue.Remove(type); } diff --git a/MediaBrowser.Common.Implementations/ScheduledTasks/Tasks/DeleteCacheFileTask.cs b/MediaBrowser.Common.Implementations/ScheduledTasks/Tasks/DeleteCacheFileTask.cs index a5b8de554..dbeedfed5 100644 --- a/MediaBrowser.Common.Implementations/ScheduledTasks/Tasks/DeleteCacheFileTask.cs +++ b/MediaBrowser.Common.Implementations/ScheduledTasks/Tasks/DeleteCacheFileTask.cs @@ -25,7 +25,7 @@ namespace MediaBrowser.Common.Implementations.ScheduledTasks.Tasks private readonly ILogger _logger; private readonly IFileSystem _fileSystem; - + /// <summary> /// Initializes a new instance of the <see cref="DeleteCacheFileTask" /> class. /// </summary> @@ -74,9 +74,11 @@ namespace MediaBrowser.Common.Implementations.ScheduledTasks.Tasks progress.Report(90); + minDateModified = DateTime.UtcNow.AddDays(-3); + try { - DeleteCacheFilesFromDirectory(cancellationToken, ApplicationPaths.TempDirectory, DateTime.MaxValue, progress); + DeleteCacheFilesFromDirectory(cancellationToken, ApplicationPaths.TempDirectory, minDateModified, progress); } catch (DirectoryNotFoundException) { diff --git a/MediaBrowser.Common.Implementations/ScheduledTasks/Tasks/ReloadLoggerTask.cs b/MediaBrowser.Common.Implementations/ScheduledTasks/Tasks/ReloadLoggerFileTask.cs index 78f60632f..78f60632f 100644 --- a/MediaBrowser.Common.Implementations/ScheduledTasks/Tasks/ReloadLoggerTask.cs +++ b/MediaBrowser.Common.Implementations/ScheduledTasks/Tasks/ReloadLoggerFileTask.cs |
