aboutsummaryrefslogtreecommitdiff
path: root/Emby.Server.Implementations/ScheduledTasks
diff options
context:
space:
mode:
Diffstat (limited to 'Emby.Server.Implementations/ScheduledTasks')
-rw-r--r--Emby.Server.Implementations/ScheduledTasks/ChapterImagesTask.cs28
-rw-r--r--Emby.Server.Implementations/ScheduledTasks/ScheduledTaskWorker.cs70
-rw-r--r--Emby.Server.Implementations/ScheduledTasks/SystemEventTrigger.cs82
-rw-r--r--Emby.Server.Implementations/ScheduledTasks/TaskManager.cs48
-rw-r--r--Emby.Server.Implementations/ScheduledTasks/Tasks/DeleteCacheFileTask.cs2
5 files changed, 38 insertions, 192 deletions
diff --git a/Emby.Server.Implementations/ScheduledTasks/ChapterImagesTask.cs b/Emby.Server.Implementations/ScheduledTasks/ChapterImagesTask.cs
index 0ae7ae96c..5373b4392 100644
--- a/Emby.Server.Implementations/ScheduledTasks/ChapterImagesTask.cs
+++ b/Emby.Server.Implementations/ScheduledTasks/ChapterImagesTask.cs
@@ -101,17 +101,20 @@ namespace Emby.Server.Implementations.ScheduledTasks
List<string> previouslyFailedImages;
- try
+ if (File.Exists(failHistoryPath))
{
- previouslyFailedImages = _fileSystem.ReadAllText(failHistoryPath)
- .Split(new[] { '|' }, StringSplitOptions.RemoveEmptyEntries)
- .ToList();
- }
- catch (FileNotFoundException)
- {
- previouslyFailedImages = new List<string>();
+ try
+ {
+ previouslyFailedImages = File.ReadAllText(failHistoryPath)
+ .Split(new[] { '|' }, StringSplitOptions.RemoveEmptyEntries)
+ .ToList();
+ }
+ catch (IOException)
+ {
+ previouslyFailedImages = new List<string>();
+ }
}
- catch (IOException)
+ else
{
previouslyFailedImages = new List<string>();
}
@@ -136,11 +139,12 @@ namespace Emby.Server.Implementations.ScheduledTasks
{
previouslyFailedImages.Add(key);
- var parentPath = _fileSystem.GetDirectoryName(failHistoryPath);
+ var parentPath = Path.GetDirectoryName(failHistoryPath);
- _fileSystem.CreateDirectory(parentPath);
+ Directory.CreateDirectory(parentPath);
- _fileSystem.WriteAllText(failHistoryPath, string.Join("|", previouslyFailedImages.ToArray()));
+ string text = string.Join("|", previouslyFailedImages);
+ File.WriteAllText(failHistoryPath, text);
}
numComplete++;
diff --git a/Emby.Server.Implementations/ScheduledTasks/ScheduledTaskWorker.cs b/Emby.Server.Implementations/ScheduledTasks/ScheduledTaskWorker.cs
index 44f6e2d7b..2b648b04b 100644
--- a/Emby.Server.Implementations/ScheduledTasks/ScheduledTaskWorker.cs
+++ b/Emby.Server.Implementations/ScheduledTasks/ScheduledTaskWorker.cs
@@ -53,7 +53,6 @@ namespace Emby.Server.Implementations.ScheduledTasks
/// <value>The task manager.</value>
private ITaskManager TaskManager { get; set; }
private readonly IFileSystem _fileSystem;
- private readonly ISystemEvents _systemEvents;
/// <summary>
/// Initializes a new instance of the <see cref="ScheduledTaskWorker" /> class.
@@ -74,7 +73,7 @@ namespace Emby.Server.Implementations.ScheduledTasks
/// or
/// logger
/// </exception>
- public ScheduledTaskWorker(IScheduledTask scheduledTask, IApplicationPaths applicationPaths, ITaskManager taskManager, IJsonSerializer jsonSerializer, ILogger logger, IFileSystem fileSystem, ISystemEvents systemEvents)
+ public ScheduledTaskWorker(IScheduledTask scheduledTask, IApplicationPaths applicationPaths, ITaskManager taskManager, IJsonSerializer jsonSerializer, ILogger logger, IFileSystem fileSystem)
{
if (scheduledTask == null)
{
@@ -103,7 +102,6 @@ namespace Emby.Server.Implementations.ScheduledTasks
JsonSerializer = jsonSerializer;
Logger = logger;
_fileSystem = fileSystem;
- _systemEvents = systemEvents;
InitTriggerEvents();
}
@@ -131,21 +129,16 @@ namespace Emby.Server.Implementations.ScheduledTasks
{
if (_lastExecutionResult == null && !_readFromFile)
{
- try
+ if (File.Exists(path))
{
- _lastExecutionResult = JsonSerializer.DeserializeFromFile<TaskResult>(path);
- }
- catch (DirectoryNotFoundException)
- {
- // File doesn't exist. No biggie
- }
- catch (FileNotFoundException)
- {
- // File doesn't exist. No biggie
- }
- catch (Exception ex)
- {
- Logger.LogError(ex, "Error deserializing {path}", path);
+ try
+ {
+ _lastExecutionResult = JsonSerializer.DeserializeFromFile<TaskResult>(path);
+ }
+ catch (Exception ex)
+ {
+ Logger.LogError(ex, "Error deserializing {File}", path);
+ }
}
_readFromFile = true;
}
@@ -158,7 +151,7 @@ namespace Emby.Server.Implementations.ScheduledTasks
_lastExecutionResult = value;
var path = GetHistoryFilePath();
- _fileSystem.CreateDirectory(_fileSystem.GetDirectoryName(path));
+ Directory.CreateDirectory(Path.GetDirectoryName(path));
lock (_lastExecutionResultSyncLock)
{
@@ -534,28 +527,15 @@ namespace Emby.Server.Implementations.ScheduledTasks
private TaskTriggerInfo[] LoadTriggerSettings()
{
- try
- {
- var list = JsonSerializer.DeserializeFromFile<IEnumerable<TaskTriggerInfo>>(GetConfigurationFilePath());
-
- if (list != null)
- {
- return list.ToArray();
- }
- }
- catch (FileNotFoundException)
- {
- // File doesn't exist. No biggie. Return defaults.
- }
- catch (DirectoryNotFoundException)
+ string path = GetConfigurationFilePath();
+ TaskTriggerInfo[] list = null;
+ if (File.Exists(path))
{
- // File doesn't exist. No biggie. Return defaults.
+ list = JsonSerializer.DeserializeFromFile<TaskTriggerInfo[]>(path);
}
- catch
- {
- }
- return GetDefaultTriggers();
+ // Return defaults if file doesn't exist.
+ return list ?? GetDefaultTriggers();
}
private TaskTriggerInfo[] GetDefaultTriggers()
@@ -585,7 +565,7 @@ namespace Emby.Server.Implementations.ScheduledTasks
{
var path = GetConfigurationFilePath();
- _fileSystem.CreateDirectory(_fileSystem.GetDirectoryName(path));
+ Directory.CreateDirectory(Path.GetDirectoryName(path));
JsonSerializer.SerializeToFile(triggers, path);
}
@@ -762,20 +742,6 @@ namespace Emby.Server.Implementations.ScheduledTasks
};
}
- if (info.Type.Equals(typeof(SystemEventTrigger).Name, StringComparison.OrdinalIgnoreCase))
- {
- if (!info.SystemEvent.HasValue)
- {
- throw new ArgumentException("Info did not contain a SystemEvent.", nameof(info));
- }
-
- return new SystemEventTrigger(_systemEvents)
- {
- SystemEvent = info.SystemEvent.Value,
- TaskOptions = options
- };
- }
-
if (info.Type.Equals(typeof(StartupTrigger).Name, StringComparison.OrdinalIgnoreCase))
{
return new StartupTrigger();
diff --git a/Emby.Server.Implementations/ScheduledTasks/SystemEventTrigger.cs b/Emby.Server.Implementations/ScheduledTasks/SystemEventTrigger.cs
deleted file mode 100644
index 7a88fc2b0..000000000
--- a/Emby.Server.Implementations/ScheduledTasks/SystemEventTrigger.cs
+++ /dev/null
@@ -1,82 +0,0 @@
-using System;
-using System.Threading.Tasks;
-using MediaBrowser.Model.System;
-using MediaBrowser.Model.Tasks;
-using Microsoft.Extensions.Logging;
-
-namespace Emby.Server.Implementations.ScheduledTasks
-{
- /// <summary>
- /// Class SystemEventTrigger
- /// </summary>
- public class SystemEventTrigger : ITaskTrigger
- {
- /// <summary>
- /// Gets or sets the system event.
- /// </summary>
- /// <value>The system event.</value>
- public SystemEvent SystemEvent { get; set; }
-
- /// <summary>
- /// Gets or sets the options of this task.
- /// </summary>
- public TaskOptions TaskOptions { get; set; }
-
- private readonly ISystemEvents _systemEvents;
-
- public SystemEventTrigger(ISystemEvents systemEvents)
- {
- _systemEvents = systemEvents;
- }
-
- /// <summary>
- /// Stars waiting for the trigger action
- /// </summary>
- /// <param name="lastResult">The last result.</param>
- /// <param name="isApplicationStartup">if set to <c>true</c> [is application startup].</param>
- public void Start(TaskResult lastResult, ILogger logger, string taskName, bool isApplicationStartup)
- {
- switch (SystemEvent)
- {
- case SystemEvent.WakeFromSleep:
- _systemEvents.Resume += _systemEvents_Resume;
- break;
- }
- }
-
- private async void _systemEvents_Resume(object sender, EventArgs e)
- {
- if (SystemEvent == SystemEvent.WakeFromSleep)
- {
- // This value is a bit arbitrary, but add a delay to help ensure network connections have been restored before running the task
- await Task.Delay(10000).ConfigureAwait(false);
-
- OnTriggered();
- }
- }
-
- /// <summary>
- /// Stops waiting for the trigger action
- /// </summary>
- public void Stop()
- {
- _systemEvents.Resume -= _systemEvents_Resume;
- }
-
- /// <summary>
- /// Occurs when [triggered].
- /// </summary>
- public event EventHandler<EventArgs> Triggered;
-
- /// <summary>
- /// Called when [triggered].
- /// </summary>
- private void OnTriggered()
- {
- if (Triggered != null)
- {
- Triggered(this, EventArgs.Empty);
- }
- }
- }
-}
diff --git a/Emby.Server.Implementations/ScheduledTasks/TaskManager.cs b/Emby.Server.Implementations/ScheduledTasks/TaskManager.cs
index 02a082d3f..b8479fd26 100644
--- a/Emby.Server.Implementations/ScheduledTasks/TaskManager.cs
+++ b/Emby.Server.Implementations/ScheduledTasks/TaskManager.cs
@@ -46,8 +46,6 @@ namespace Emby.Server.Implementations.ScheduledTasks
/// <value>The application paths.</value>
private IApplicationPaths ApplicationPaths { get; set; }
- private readonly ISystemEvents _systemEvents;
-
/// <summary>
/// Gets the logger.
/// </summary>
@@ -66,54 +64,16 @@ namespace Emby.Server.Implementations.ScheduledTasks
IApplicationPaths applicationPaths,
IJsonSerializer jsonSerializer,
ILoggerFactory loggerFactory,
- IFileSystem fileSystem,
- ISystemEvents systemEvents)
+ IFileSystem fileSystem)
{
ApplicationPaths = applicationPaths;
JsonSerializer = jsonSerializer;
Logger = loggerFactory.CreateLogger(nameof(TaskManager));
_fileSystem = fileSystem;
- _systemEvents = systemEvents;
ScheduledTasks = new IScheduledTaskWorker[] { };
}
- private void BindToSystemEvent()
- {
- _systemEvents.Resume += _systemEvents_Resume;
- }
-
- private void _systemEvents_Resume(object sender, EventArgs e)
- {
- foreach (var task in ScheduledTasks)
- {
- task.ReloadTriggerEvents();
- }
- }
-
- public void RunTaskOnNextStartup(string key)
- {
- var path = Path.Combine(ApplicationPaths.CachePath, "startuptasks.txt");
-
- List<string> lines;
-
- try
- {
- lines = _fileSystem.ReadAllLines(path).ToList();
- }
- catch
- {
- lines = new List<string>();
- }
-
- if (!lines.Contains(key, StringComparer.OrdinalIgnoreCase))
- {
- lines.Add(key);
- _fileSystem.CreateDirectory(_fileSystem.GetDirectoryName(path));
- _fileSystem.WriteAllLines(path, lines);
- }
- }
-
private void RunStartupTasks()
{
var path = Path.Combine(ApplicationPaths.CachePath, "startuptasks.txt");
@@ -126,7 +86,7 @@ namespace Emby.Server.Implementations.ScheduledTasks
try
{
- lines = _fileSystem.ReadAllLines(path).Where(i => !string.IsNullOrWhiteSpace(i)).Distinct(StringComparer.OrdinalIgnoreCase).ToList();
+ lines = File.ReadAllLines(path).Where(i => !string.IsNullOrWhiteSpace(i)).Distinct(StringComparer.OrdinalIgnoreCase).ToList();
foreach (var key in lines)
{
@@ -290,12 +250,10 @@ namespace Emby.Server.Implementations.ScheduledTasks
var myTasks = ScheduledTasks.ToList();
var list = tasks.ToList();
- myTasks.AddRange(list.Select(t => new ScheduledTaskWorker(t, ApplicationPaths, this, JsonSerializer, Logger, _fileSystem, _systemEvents)));
+ myTasks.AddRange(list.Select(t => new ScheduledTaskWorker(t, ApplicationPaths, this, JsonSerializer, Logger, _fileSystem)));
ScheduledTasks = myTasks.ToArray();
- BindToSystemEvent();
-
RunStartupTasks();
}
diff --git a/Emby.Server.Implementations/ScheduledTasks/Tasks/DeleteCacheFileTask.cs b/Emby.Server.Implementations/ScheduledTasks/Tasks/DeleteCacheFileTask.cs
index 2590f455c..52077b242 100644
--- a/Emby.Server.Implementations/ScheduledTasks/Tasks/DeleteCacheFileTask.cs
+++ b/Emby.Server.Implementations/ScheduledTasks/Tasks/DeleteCacheFileTask.cs
@@ -128,7 +128,7 @@ namespace Emby.Server.Implementations.ScheduledTasks.Tasks
{
try
{
- _fileSystem.DeleteDirectory(directory, false);
+ Directory.Delete(directory, false);
}
catch (UnauthorizedAccessException ex)
{