From 07791d46a571d3d6eed23e98ec0fe1c46ea0d37f Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Sun, 23 Oct 2016 15:14:57 -0400 Subject: rework scheduled tasks in preparation of common project going portable --- .../Cryptography/ICryptographyProvider.cs | 9 +++++ MediaBrowser.Model/Entities/MediaStream.cs | 2 +- MediaBrowser.Model/IO/IMemoryStreamProvider.cs | 11 +++++ MediaBrowser.Model/IO/StreamDefaults.cs | 19 +++++++++ MediaBrowser.Model/MediaBrowser.Model.csproj | 6 +++ .../Tasks/IConfigurableScheduledTask.cs | 18 +++++++++ MediaBrowser.Model/Tasks/IScheduledTask.cs | 47 ++++++++++++++++++++++ MediaBrowser.Model/Tasks/TaskExecutionOptions.cs | 11 +++++ MediaBrowser.Model/Tasks/TaskTriggerInfo.cs | 6 +++ 9 files changed, 128 insertions(+), 1 deletion(-) create mode 100644 MediaBrowser.Model/Cryptography/ICryptographyProvider.cs create mode 100644 MediaBrowser.Model/IO/IMemoryStreamProvider.cs create mode 100644 MediaBrowser.Model/IO/StreamDefaults.cs create mode 100644 MediaBrowser.Model/Tasks/IConfigurableScheduledTask.cs create mode 100644 MediaBrowser.Model/Tasks/IScheduledTask.cs create mode 100644 MediaBrowser.Model/Tasks/TaskExecutionOptions.cs (limited to 'MediaBrowser.Model') diff --git a/MediaBrowser.Model/Cryptography/ICryptographyProvider.cs b/MediaBrowser.Model/Cryptography/ICryptographyProvider.cs new file mode 100644 index 000000000..5899f03d5 --- /dev/null +++ b/MediaBrowser.Model/Cryptography/ICryptographyProvider.cs @@ -0,0 +1,9 @@ +using System; + +namespace MediaBrowser.Model.Cryptography +{ + public interface ICryptographyProvider + { + Guid GetMD5(string str); + } +} diff --git a/MediaBrowser.Model/Entities/MediaStream.cs b/MediaBrowser.Model/Entities/MediaStream.cs index 6d3e2ce4c..b56d7df15 100644 --- a/MediaBrowser.Model/Entities/MediaStream.cs +++ b/MediaBrowser.Model/Entities/MediaStream.cs @@ -118,7 +118,7 @@ namespace MediaBrowser.Model.Entities private string AddLanguageIfNeeded(string title) { - if (!string.IsNullOrEmpty(Language) && title.IndexOf(Language, StringComparison.OrdinalIgnoreCase) == -1) + if (!string.IsNullOrEmpty(Language) && !string.Equals(Language, "und", StringComparison.OrdinalIgnoreCase) && title.IndexOf(Language, StringComparison.OrdinalIgnoreCase) == -1) { title = StringHelper.FirstToUpper(Language) + " " + title; } diff --git a/MediaBrowser.Model/IO/IMemoryStreamProvider.cs b/MediaBrowser.Model/IO/IMemoryStreamProvider.cs new file mode 100644 index 000000000..82a758d9a --- /dev/null +++ b/MediaBrowser.Model/IO/IMemoryStreamProvider.cs @@ -0,0 +1,11 @@ +using System.IO; + +namespace MediaBrowser.Model.IO +{ + public interface IMemoryStreamProvider + { + MemoryStream CreateNew(); + MemoryStream CreateNew(int capacity); + MemoryStream CreateNew(byte[] buffer); + } +} diff --git a/MediaBrowser.Model/IO/StreamDefaults.cs b/MediaBrowser.Model/IO/StreamDefaults.cs new file mode 100644 index 000000000..1e99ff4b5 --- /dev/null +++ b/MediaBrowser.Model/IO/StreamDefaults.cs @@ -0,0 +1,19 @@ + +namespace MediaBrowser.Model.IO +{ + /// + /// Class StreamDefaults + /// + public static class StreamDefaults + { + /// + /// The default copy to buffer size + /// + public const int DefaultCopyToBufferSize = 81920; + + /// + /// The default file stream buffer size + /// + public const int DefaultFileStreamBufferSize = 81920; + } +} diff --git a/MediaBrowser.Model/MediaBrowser.Model.csproj b/MediaBrowser.Model/MediaBrowser.Model.csproj index 6c9197c16..e5aac6c06 100644 --- a/MediaBrowser.Model/MediaBrowser.Model.csproj +++ b/MediaBrowser.Model/MediaBrowser.Model.csproj @@ -98,6 +98,7 @@ + @@ -133,6 +134,8 @@ + + @@ -384,6 +387,9 @@ + + + diff --git a/MediaBrowser.Model/Tasks/IConfigurableScheduledTask.cs b/MediaBrowser.Model/Tasks/IConfigurableScheduledTask.cs new file mode 100644 index 000000000..ed981a905 --- /dev/null +++ b/MediaBrowser.Model/Tasks/IConfigurableScheduledTask.cs @@ -0,0 +1,18 @@ +namespace MediaBrowser.Model.Tasks +{ + public interface IConfigurableScheduledTask + { + /// + /// Gets a value indicating whether this instance is hidden. + /// + /// true if this instance is hidden; otherwise, false. + bool IsHidden { get; } + /// + /// Gets a value indicating whether this instance is enabled. + /// + /// true if this instance is enabled; otherwise, false. + bool IsEnabled { get; } + + bool IsLogged { get; } + } +} \ No newline at end of file diff --git a/MediaBrowser.Model/Tasks/IScheduledTask.cs b/MediaBrowser.Model/Tasks/IScheduledTask.cs new file mode 100644 index 000000000..81ba239ad --- /dev/null +++ b/MediaBrowser.Model/Tasks/IScheduledTask.cs @@ -0,0 +1,47 @@ +using System; +using System.Collections.Generic; +using System.Threading; +using System.Threading.Tasks; + +namespace MediaBrowser.Model.Tasks +{ + /// + /// Interface IScheduledTaskWorker + /// + public interface IScheduledTask + { + /// + /// Gets the name of the task + /// + /// The name. + string Name { get; } + + string Key { get; } + + /// + /// Gets the description. + /// + /// The description. + string Description { get; } + + /// + /// Gets the category. + /// + /// The category. + string Category { get; } + + /// + /// Executes the task + /// + /// The cancellation token. + /// The progress. + /// Task. + Task Execute(CancellationToken cancellationToken, IProgress progress); + + /// + /// Gets the default triggers. + /// + /// IEnumerable{BaseTaskTrigger}. + IEnumerable GetDefaultTriggers(); + } +} diff --git a/MediaBrowser.Model/Tasks/TaskExecutionOptions.cs b/MediaBrowser.Model/Tasks/TaskExecutionOptions.cs new file mode 100644 index 000000000..faba35b22 --- /dev/null +++ b/MediaBrowser.Model/Tasks/TaskExecutionOptions.cs @@ -0,0 +1,11 @@ + +namespace MediaBrowser.Model.Tasks +{ + /// + /// A class that encomposases all common task run properties. + /// + public class TaskExecutionOptions + { + public int? MaxRuntimeMs { get; set; } + } +} diff --git a/MediaBrowser.Model/Tasks/TaskTriggerInfo.cs b/MediaBrowser.Model/Tasks/TaskTriggerInfo.cs index aacd56e65..69578c41d 100644 --- a/MediaBrowser.Model/Tasks/TaskTriggerInfo.cs +++ b/MediaBrowser.Model/Tasks/TaskTriggerInfo.cs @@ -42,5 +42,11 @@ namespace MediaBrowser.Model.Tasks /// /// The maximum runtime ms. public int? MaxRuntimeMs { get; set; } + + public const string TriggerDaily = "DailyTrigger"; + public const string TriggerWeekly = "WeeklyTrigger"; + public const string TriggerInterval = "IntervalTrigger"; + public const string TriggerSystemEvent = "SystemEventTrigger"; + public const string TriggerStartup = "StartupTrigger"; } } -- cgit v1.2.3