diff options
Diffstat (limited to 'Emby.Server.Implementations/ScheduledTasks/ScheduledTaskWorker.cs')
| -rw-r--r-- | Emby.Server.Implementations/ScheduledTasks/ScheduledTaskWorker.cs | 53 |
1 files changed, 36 insertions, 17 deletions
diff --git a/Emby.Server.Implementations/ScheduledTasks/ScheduledTaskWorker.cs b/Emby.Server.Implementations/ScheduledTasks/ScheduledTaskWorker.cs index bdc29c16b..f6397b670 100644 --- a/Emby.Server.Implementations/ScheduledTasks/ScheduledTaskWorker.cs +++ b/Emby.Server.Implementations/ScheduledTasks/ScheduledTaskWorker.cs @@ -160,7 +160,7 @@ namespace Emby.Server.Implementations.ScheduledTasks _lastExecutionResult = value; var path = GetHistoryFilePath(); - _fileSystem.CreateDirectory(_fileSystem.GetDirectoryName(path)); + _fileSystem.CreateDirectory(_fileSystem.GetDirectoryName(path)); lock (_lastExecutionResultSyncLock) { @@ -236,7 +236,7 @@ namespace Emby.Server.Implementations.ScheduledTasks /// <summary> /// The _triggers /// </summary> - private Tuple<TaskTriggerInfo,ITaskTrigger>[] _triggers; + private Tuple<TaskTriggerInfo, ITaskTrigger>[] _triggers; /// <summary> /// Gets the triggers that define when the task will run /// </summary> @@ -350,7 +350,7 @@ namespace Emby.Server.Implementations.ScheduledTasks /// </summary> /// <param name="sender">The source of the event.</param> /// <param name="e">The <see cref="EventArgs" /> instance containing the event data.</param> - async void trigger_Triggered(object sender, GenericEventArgs<TaskExecutionOptions> e) + async void trigger_Triggered(object sender, EventArgs e) { var trigger = (ITaskTrigger)sender; @@ -365,7 +365,7 @@ namespace Emby.Server.Implementations.ScheduledTasks trigger.Stop(); - TaskManager.QueueScheduledTask(ScheduledTask, e.Argument); + TaskManager.QueueScheduledTask(ScheduledTask, trigger.TaskOptions); await Task.Delay(1000).ConfigureAwait(false); @@ -380,7 +380,7 @@ namespace Emby.Server.Implementations.ScheduledTasks /// <param name="options">Task options.</param> /// <returns>Task.</returns> /// <exception cref="System.InvalidOperationException">Cannot execute a Task that is already running</exception> - public async Task Execute(TaskExecutionOptions options) + public async Task Execute(TaskOptions options) { var task = Task.Run(async () => await ExecuteInternal(options).ConfigureAwait(false)); @@ -397,7 +397,7 @@ namespace Emby.Server.Implementations.ScheduledTasks } } - private async Task ExecuteInternal(TaskExecutionOptions options) + private async Task ExecuteInternal(TaskOptions options) { // Cancel the current execution, if any if (CurrentCancellationTokenSource != null) @@ -422,14 +422,12 @@ namespace Emby.Server.Implementations.ScheduledTasks try { - if (options != null && options.MaxRuntimeMs.HasValue) + if (options != null && options.MaxRuntimeTicks.HasValue) { - CurrentCancellationTokenSource.CancelAfter(options.MaxRuntimeMs.Value); + CurrentCancellationTokenSource.CancelAfter(TimeSpan.FromTicks(options.MaxRuntimeTicks.Value)); } - var localTask = ScheduledTask.Execute(CurrentCancellationTokenSource.Token, progress); - - await localTask.ConfigureAwait(false); + await ScheduledTask.Execute(CurrentCancellationTokenSource.Token, progress).ConfigureAwait(false); status = TaskCompletionStatus.Completed; } @@ -563,13 +561,35 @@ namespace Emby.Server.Implementations.ScheduledTasks catch (FileNotFoundException) { // File doesn't exist. No biggie. Return defaults. - return ScheduledTask.GetDefaultTriggers().ToArray(); } catch (DirectoryNotFoundException) { // File doesn't exist. No biggie. Return defaults. } - return ScheduledTask.GetDefaultTriggers().ToArray(); + catch + { + + } + return GetDefaultTriggers(); + } + + private TaskTriggerInfo[] GetDefaultTriggers() + { + try + { + return ScheduledTask.GetDefaultTriggers().ToArray(); + } + catch + { + return new TaskTriggerInfo[] + { + new TaskTriggerInfo + { + IntervalTicks = TimeSpan.FromDays(1).Ticks, + Type = TaskTriggerInfo.TriggerInterval + } + }; + } } /// <summary> @@ -580,7 +600,7 @@ namespace Emby.Server.Implementations.ScheduledTasks { var path = GetConfigurationFilePath(); - _fileSystem.CreateDirectory(_fileSystem.GetDirectoryName(path)); + _fileSystem.CreateDirectory(_fileSystem.GetDirectoryName(path)); JsonSerializer.SerializeToFile(triggers, path); } @@ -625,7 +645,6 @@ namespace Emby.Server.Implementations.ScheduledTasks public void Dispose() { Dispose(true); - GC.SuppressFinalize(this); } /// <summary> @@ -705,9 +724,9 @@ namespace Emby.Server.Implementations.ScheduledTasks /// <exception cref="System.ArgumentException">Invalid trigger type: + info.Type</exception> private ITaskTrigger GetTrigger(TaskTriggerInfo info) { - var options = new TaskExecutionOptions + var options = new TaskOptions { - MaxRuntimeMs = info.MaxRuntimeMs + MaxRuntimeTicks = info.MaxRuntimeTicks }; if (info.Type.Equals(typeof(DailyTrigger).Name, StringComparison.OrdinalIgnoreCase)) |
