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 --- MediaBrowser.Server.Implementations/Library/SearchEngine.cs | 1 + 1 file changed, 1 insertion(+) (limited to 'MediaBrowser.Server.Implementations/Library/SearchEngine.cs') diff --git a/MediaBrowser.Server.Implementations/Library/SearchEngine.cs b/MediaBrowser.Server.Implementations/Library/SearchEngine.cs index 40cca7bab..3dff16e24 100644 --- a/MediaBrowser.Server.Implementations/Library/SearchEngine.cs +++ b/MediaBrowser.Server.Implementations/Library/SearchEngine.cs @@ -10,6 +10,7 @@ using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; +using MediaBrowser.Controller.Extensions; namespace MediaBrowser.Server.Implementations.Library { -- cgit v1.2.3 From 0f8ccfaf496c3c761c06285574048f8866ef692c Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Sun, 23 Oct 2016 15:47:34 -0400 Subject: prep for portable common --- .../ScheduledTasks/ScheduledTaskService.cs | 1 - .../ScheduledTasksWebSocketListener.cs | 3 +- .../BaseApplicationHost.cs | 32 +++++---- MediaBrowser.Common/MediaBrowser.Common.csproj | 10 +-- .../ScheduledTasks/IScheduledTaskWorker.cs | 77 -------------------- MediaBrowser.Common/ScheduledTasks/ITaskManager.cs | 81 ---------------------- MediaBrowser.Common/ScheduledTasks/ITaskTrigger.cs | 36 ---------- .../ScheduledTasks/ScheduledTaskHelpers.cs | 53 -------------- .../ScheduledTasks/TaskCompletionEventArgs.cs | 12 ---- .../Entities/Audio/MusicArtist.cs | 1 + .../Entities/Audio/MusicGenre.cs | 1 + MediaBrowser.Controller/Entities/BaseItem.cs | 1 + MediaBrowser.Controller/Entities/GameGenre.cs | 1 + MediaBrowser.Controller/Entities/Genre.cs | 1 + MediaBrowser.Controller/Entities/Person.cs | 1 + MediaBrowser.Controller/Entities/Studio.cs | 1 + .../Extensions/BaseExtensions.cs | 25 ------- .../Extensions/StringExtensions.cs | 22 ++++++ .../MediaBrowser.Controller.csproj | 2 +- MediaBrowser.Model/Dlna/ConditionProcessor.cs | 6 +- MediaBrowser.Model/Dlna/StreamBuilder.cs | 2 +- MediaBrowser.Model/Drawing/ImageSize.cs | 6 +- MediaBrowser.Model/Extensions/BoolHelper.cs | 16 ----- MediaBrowser.Model/Extensions/DoubleHelper.cs | 21 ------ MediaBrowser.Model/Extensions/FloatHelper.cs | 18 ----- MediaBrowser.Model/MediaBrowser.Model.csproj | 8 ++- MediaBrowser.Model/Tasks/IScheduledTaskWorker.cs | 76 ++++++++++++++++++++ MediaBrowser.Model/Tasks/ITaskManager.cs | 80 +++++++++++++++++++++ MediaBrowser.Model/Tasks/ITaskTrigger.cs | 35 ++++++++++ MediaBrowser.Model/Tasks/ScheduledTaskHelpers.cs | 52 ++++++++++++++ .../Tasks/TaskCompletionEventArgs.cs | 11 +++ .../MediaInfo/SubtitleScheduledTask.cs | 1 - MediaBrowser.Providers/TV/SeriesPostScanTask.cs | 2 +- .../EntryPoints/ServerEventNotifier.cs | 1 + .../FileOrganization/FileOrganizationNotifier.cs | 1 + .../FileOrganization/FileOrganizationService.cs | 1 + .../IO/FileRefresher.cs | 1 + .../IO/LibraryMonitor.cs | 1 + .../Library/LibraryManager.cs | 1 + .../Library/SearchEngine.cs | 1 + .../LiveTv/LiveTvManager.cs | 1 + .../Persistence/SqliteItemRepository.cs | 1 + .../Sync/SyncManager.cs | 1 + .../Migrations/DbMigration.cs | 1 + 44 files changed, 332 insertions(+), 374 deletions(-) delete mode 100644 MediaBrowser.Common/ScheduledTasks/IScheduledTaskWorker.cs delete mode 100644 MediaBrowser.Common/ScheduledTasks/ITaskManager.cs delete mode 100644 MediaBrowser.Common/ScheduledTasks/ITaskTrigger.cs delete mode 100644 MediaBrowser.Common/ScheduledTasks/ScheduledTaskHelpers.cs delete mode 100644 MediaBrowser.Common/ScheduledTasks/TaskCompletionEventArgs.cs delete mode 100644 MediaBrowser.Controller/Extensions/BaseExtensions.cs create mode 100644 MediaBrowser.Controller/Extensions/StringExtensions.cs delete mode 100644 MediaBrowser.Model/Extensions/BoolHelper.cs delete mode 100644 MediaBrowser.Model/Extensions/DoubleHelper.cs delete mode 100644 MediaBrowser.Model/Extensions/FloatHelper.cs create mode 100644 MediaBrowser.Model/Tasks/IScheduledTaskWorker.cs create mode 100644 MediaBrowser.Model/Tasks/ITaskManager.cs create mode 100644 MediaBrowser.Model/Tasks/ITaskTrigger.cs create mode 100644 MediaBrowser.Model/Tasks/ScheduledTaskHelpers.cs create mode 100644 MediaBrowser.Model/Tasks/TaskCompletionEventArgs.cs (limited to 'MediaBrowser.Server.Implementations/Library/SearchEngine.cs') diff --git a/MediaBrowser.Api/ScheduledTasks/ScheduledTaskService.cs b/MediaBrowser.Api/ScheduledTasks/ScheduledTaskService.cs index 287b87f77..29b3988ad 100644 --- a/MediaBrowser.Api/ScheduledTasks/ScheduledTaskService.cs +++ b/MediaBrowser.Api/ScheduledTasks/ScheduledTaskService.cs @@ -1,5 +1,4 @@ using MediaBrowser.Common.Extensions; -using MediaBrowser.Common.ScheduledTasks; using MediaBrowser.Controller.Net; using MediaBrowser.Model.Tasks; using ServiceStack; diff --git a/MediaBrowser.Api/ScheduledTasks/ScheduledTasksWebSocketListener.cs b/MediaBrowser.Api/ScheduledTasks/ScheduledTasksWebSocketListener.cs index 5d3465c58..6e64345b9 100644 --- a/MediaBrowser.Api/ScheduledTasks/ScheduledTasksWebSocketListener.cs +++ b/MediaBrowser.Api/ScheduledTasks/ScheduledTasksWebSocketListener.cs @@ -1,5 +1,4 @@ -using MediaBrowser.Common.ScheduledTasks; -using MediaBrowser.Controller.Net; +using MediaBrowser.Controller.Net; using MediaBrowser.Model.Events; using MediaBrowser.Model.Logging; using MediaBrowser.Model.Tasks; diff --git a/MediaBrowser.Common.Implementations/BaseApplicationHost.cs b/MediaBrowser.Common.Implementations/BaseApplicationHost.cs index b1e6a0453..baf6d85af 100644 --- a/MediaBrowser.Common.Implementations/BaseApplicationHost.cs +++ b/MediaBrowser.Common.Implementations/BaseApplicationHost.cs @@ -445,20 +445,28 @@ namespace MediaBrowser.Common.Implementations private IPlugin LoadPlugin(IPlugin plugin) { - var assemblyPlugin = plugin as IPluginAssembly; - - if (assemblyPlugin != null) + try { - var assembly = plugin.GetType().Assembly; - var assemblyName = assembly.GetName(); + var assemblyPlugin = plugin as IPluginAssembly; - var attribute = (GuidAttribute)assembly.GetCustomAttributes(typeof(GuidAttribute), true)[0]; - var assemblyId = new Guid(attribute.Value); + if (assemblyPlugin != null) + { + var assembly = plugin.GetType().Assembly; + var assemblyName = assembly.GetName(); - var assemblyFileName = assemblyName.Name + ".dll"; - var assemblyFilePath = Path.Combine(ApplicationPaths.PluginsPath, assemblyFileName); + var attribute = (GuidAttribute)assembly.GetCustomAttributes(typeof(GuidAttribute), true)[0]; + var assemblyId = new Guid(attribute.Value); - assemblyPlugin.SetAttributes(assemblyFilePath, assemblyFileName, assemblyName.Version, assemblyId); + var assemblyFileName = assemblyName.Name + ".dll"; + var assemblyFilePath = Path.Combine(ApplicationPaths.PluginsPath, assemblyFileName); + + assemblyPlugin.SetAttributes(assemblyFilePath, assemblyFileName, assemblyName.Version, assemblyId); + } + } + catch (Exception ex) + { + Logger.ErrorException("Error loading plugin {0}", ex, plugin.GetType().FullName); + return null; } return plugin; @@ -596,7 +604,7 @@ namespace MediaBrowser.Common.Implementations } catch (Exception ex) { - Logger.ErrorException("Error creating {0}", ex, type.Name); + Logger.ErrorException("Error creating {0}", ex, type.FullName); throw; } @@ -615,7 +623,7 @@ namespace MediaBrowser.Common.Implementations } catch (Exception ex) { - Logger.ErrorException("Error creating {0}", ex, type.Name); + Logger.ErrorException("Error creating {0}", ex, type.FullName); // Don't blow up in release mode return null; } diff --git a/MediaBrowser.Common/MediaBrowser.Common.csproj b/MediaBrowser.Common/MediaBrowser.Common.csproj index 94ebf8dc9..931ac7227 100644 --- a/MediaBrowser.Common/MediaBrowser.Common.csproj +++ b/MediaBrowser.Common/MediaBrowser.Common.csproj @@ -1,5 +1,5 @@  - + Debug @@ -13,7 +13,8 @@ ..\ 10.0.0 2.0 - v4.5 + v4.6 + true @@ -67,13 +68,8 @@ - - - - - diff --git a/MediaBrowser.Common/ScheduledTasks/IScheduledTaskWorker.cs b/MediaBrowser.Common/ScheduledTasks/IScheduledTaskWorker.cs deleted file mode 100644 index a3a28684d..000000000 --- a/MediaBrowser.Common/ScheduledTasks/IScheduledTaskWorker.cs +++ /dev/null @@ -1,77 +0,0 @@ -using MediaBrowser.Model.Events; -using MediaBrowser.Model.Tasks; -using System; - -namespace MediaBrowser.Common.ScheduledTasks -{ - /// - /// Interface IScheduledTaskWorker - /// - public interface IScheduledTaskWorker : IDisposable - { - /// - /// Occurs when [task progress]. - /// - event EventHandler> TaskProgress; - - /// - /// Gets or sets the scheduled task. - /// - /// The scheduled task. - IScheduledTask ScheduledTask { get; } - - /// - /// Gets the last execution result. - /// - /// The last execution result. - TaskResult LastExecutionResult { get; } - - /// - /// Gets the name. - /// - /// The name. - string Name { get; } - - /// - /// Gets the description. - /// - /// The description. - string Description { get; } - - /// - /// Gets the category. - /// - /// The category. - string Category { get; } - - /// - /// Gets the state. - /// - /// The state. - TaskState State { get; } - - /// - /// Gets the current progress. - /// - /// The current progress. - double? CurrentProgress { get; } - - /// - /// Gets the triggers that define when the task will run - /// - /// The triggers. - /// value - TaskTriggerInfo[] Triggers { get; set; } - - /// - /// Gets the unique id. - /// - /// The unique id. - string Id { get; } - - /// - /// Reloads the trigger events. - /// - void ReloadTriggerEvents(); - } -} \ No newline at end of file diff --git a/MediaBrowser.Common/ScheduledTasks/ITaskManager.cs b/MediaBrowser.Common/ScheduledTasks/ITaskManager.cs deleted file mode 100644 index e557a6b2c..000000000 --- a/MediaBrowser.Common/ScheduledTasks/ITaskManager.cs +++ /dev/null @@ -1,81 +0,0 @@ -using MediaBrowser.Model.Events; -using System; -using System.Collections.Generic; -using System.Threading.Tasks; -using MediaBrowser.Model.Tasks; - -namespace MediaBrowser.Common.ScheduledTasks -{ - public interface ITaskManager : IDisposable - { - /// - /// Gets the list of Scheduled Tasks - /// - /// The scheduled tasks. - IScheduledTaskWorker[] ScheduledTasks { get; } - - /// - /// Cancels if running and queue. - /// - /// - /// Task options. - void CancelIfRunningAndQueue(TaskExecutionOptions options) - where T : IScheduledTask; - - /// - /// Cancels if running and queue. - /// - /// - void CancelIfRunningAndQueue() - where T : IScheduledTask; - - /// - /// Cancels if running. - /// - /// - void CancelIfRunning() - where T : IScheduledTask; - - /// - /// Queues the scheduled task. - /// - /// - /// Task options. - void QueueScheduledTask(TaskExecutionOptions options) - where T : IScheduledTask; - - /// - /// Queues the scheduled task. - /// - /// - void QueueScheduledTask() - where T : IScheduledTask; - - void QueueIfNotRunning() - where T : IScheduledTask; - - /// - /// Queues the scheduled task. - /// - /// The task. - /// The task run options. - void QueueScheduledTask(IScheduledTask task, TaskExecutionOptions options = null); - - /// - /// Adds the tasks. - /// - /// The tasks. - void AddTasks(IEnumerable tasks); - - void Cancel(IScheduledTaskWorker task); - Task Execute(IScheduledTaskWorker task, TaskExecutionOptions options = null); - - void Execute() - where T : IScheduledTask; - - event EventHandler> TaskExecuting; - event EventHandler TaskCompleted; - - bool SuspendTriggers { get; set; } - } -} \ No newline at end of file diff --git a/MediaBrowser.Common/ScheduledTasks/ITaskTrigger.cs b/MediaBrowser.Common/ScheduledTasks/ITaskTrigger.cs deleted file mode 100644 index d6ca63ad7..000000000 --- a/MediaBrowser.Common/ScheduledTasks/ITaskTrigger.cs +++ /dev/null @@ -1,36 +0,0 @@ -using MediaBrowser.Model.Events; -using MediaBrowser.Model.Tasks; -using System; -using MediaBrowser.Model.Logging; - -namespace MediaBrowser.Common.ScheduledTasks -{ - /// - /// Interface ITaskTrigger - /// - public interface ITaskTrigger - { - /// - /// Fires when the trigger condition is satisfied and the task should run - /// - event EventHandler> Triggered; - - /// - /// Stars waiting for the trigger action - /// - void Start(TaskResult lastResult, ILogger logger, string taskName, bool isApplicationStartup); - - /// - /// Stops waiting for the trigger action - /// - void Stop(); - - /// - /// Gets or sets the execution properties of this task. - /// - /// - /// The execution properties of this task. - /// - TaskExecutionOptions TaskOptions { get; set; } - } -} \ No newline at end of file diff --git a/MediaBrowser.Common/ScheduledTasks/ScheduledTaskHelpers.cs b/MediaBrowser.Common/ScheduledTasks/ScheduledTaskHelpers.cs deleted file mode 100644 index fe45f1621..000000000 --- a/MediaBrowser.Common/ScheduledTasks/ScheduledTaskHelpers.cs +++ /dev/null @@ -1,53 +0,0 @@ -using MediaBrowser.Model.Tasks; -using System; -using System.Linq; - -namespace MediaBrowser.Common.ScheduledTasks -{ - /// - /// Class ScheduledTaskHelpers - /// - public static class ScheduledTaskHelpers - { - /// - /// Gets the task info. - /// - /// The task. - /// TaskInfo. - public static TaskInfo GetTaskInfo(IScheduledTaskWorker task) - { - var isHidden = false; - - var configurableTask = task.ScheduledTask as IConfigurableScheduledTask; - - if (configurableTask != null) - { - isHidden = configurableTask.IsHidden; - } - - string key = task.ScheduledTask.Key; - - var triggers = task.Triggers - .OrderBy(i => i.Type) - .ThenBy(i => i.DayOfWeek ?? DayOfWeek.Sunday) - .ThenBy(i => i.TimeOfDayTicks ?? 0) - .ToList(); - - return new TaskInfo - { - Name = task.Name, - CurrentProgressPercentage = task.CurrentProgress, - State = task.State, - Id = task.Id, - LastExecutionResult = task.LastExecutionResult, - - Triggers = triggers, - - Description = task.Description, - Category = task.Category, - IsHidden = isHidden, - Key = key - }; - } - } -} diff --git a/MediaBrowser.Common/ScheduledTasks/TaskCompletionEventArgs.cs b/MediaBrowser.Common/ScheduledTasks/TaskCompletionEventArgs.cs deleted file mode 100644 index 2974806d0..000000000 --- a/MediaBrowser.Common/ScheduledTasks/TaskCompletionEventArgs.cs +++ /dev/null @@ -1,12 +0,0 @@ -using MediaBrowser.Model.Tasks; -using System; - -namespace MediaBrowser.Common.ScheduledTasks -{ - public class TaskCompletionEventArgs : EventArgs - { - public IScheduledTaskWorker Task { get; set; } - - public TaskResult Result { get; set; } - } -} diff --git a/MediaBrowser.Controller/Entities/Audio/MusicArtist.cs b/MediaBrowser.Controller/Entities/Audio/MusicArtist.cs index 07cf43c5b..4fdd809e0 100644 --- a/MediaBrowser.Controller/Entities/Audio/MusicArtist.cs +++ b/MediaBrowser.Controller/Entities/Audio/MusicArtist.cs @@ -11,6 +11,7 @@ using System.Threading; using System.Threading.Tasks; using MediaBrowser.Common.Extensions; using MediaBrowser.Controller.Extensions; +using MediaBrowser.Model.Extensions; namespace MediaBrowser.Controller.Entities.Audio { diff --git a/MediaBrowser.Controller/Entities/Audio/MusicGenre.cs b/MediaBrowser.Controller/Entities/Audio/MusicGenre.cs index a111166ac..cb17ea265 100644 --- a/MediaBrowser.Controller/Entities/Audio/MusicGenre.cs +++ b/MediaBrowser.Controller/Entities/Audio/MusicGenre.cs @@ -4,6 +4,7 @@ using System.Linq; using System.Runtime.Serialization; using MediaBrowser.Common.Extensions; using MediaBrowser.Controller.Extensions; +using MediaBrowser.Model.Extensions; namespace MediaBrowser.Controller.Entities.Audio { diff --git a/MediaBrowser.Controller/Entities/BaseItem.cs b/MediaBrowser.Controller/Entities/BaseItem.cs index 9aad91a28..4836aca8b 100644 --- a/MediaBrowser.Controller/Entities/BaseItem.cs +++ b/MediaBrowser.Controller/Entities/BaseItem.cs @@ -26,6 +26,7 @@ using System.Threading.Tasks; using CommonIO; using MediaBrowser.Controller.Extensions; using MediaBrowser.Controller.Sorting; +using MediaBrowser.Model.Extensions; using MediaBrowser.Model.LiveTv; using MediaBrowser.Model.Providers; diff --git a/MediaBrowser.Controller/Entities/GameGenre.cs b/MediaBrowser.Controller/Entities/GameGenre.cs index 2987a9a07..545bef44c 100644 --- a/MediaBrowser.Controller/Entities/GameGenre.cs +++ b/MediaBrowser.Controller/Entities/GameGenre.cs @@ -4,6 +4,7 @@ using System.Linq; using System.Runtime.Serialization; using MediaBrowser.Common.Extensions; using MediaBrowser.Controller.Extensions; +using MediaBrowser.Model.Extensions; namespace MediaBrowser.Controller.Entities { diff --git a/MediaBrowser.Controller/Entities/Genre.cs b/MediaBrowser.Controller/Entities/Genre.cs index cde9c6ce4..6fefdfa55 100644 --- a/MediaBrowser.Controller/Entities/Genre.cs +++ b/MediaBrowser.Controller/Entities/Genre.cs @@ -5,6 +5,7 @@ using System.Collections.Generic; using System.Linq; using MediaBrowser.Common.Extensions; using MediaBrowser.Controller.Extensions; +using MediaBrowser.Model.Extensions; namespace MediaBrowser.Controller.Entities { diff --git a/MediaBrowser.Controller/Entities/Person.cs b/MediaBrowser.Controller/Entities/Person.cs index d7acdb65e..6f7a32a66 100644 --- a/MediaBrowser.Controller/Entities/Person.cs +++ b/MediaBrowser.Controller/Entities/Person.cs @@ -6,6 +6,7 @@ using System.Runtime.Serialization; using MediaBrowser.Common.Extensions; using MediaBrowser.Controller.Extensions; using MediaBrowser.Model.Entities; +using MediaBrowser.Model.Extensions; namespace MediaBrowser.Controller.Entities { diff --git a/MediaBrowser.Controller/Entities/Studio.cs b/MediaBrowser.Controller/Entities/Studio.cs index 773250ad9..114c14155 100644 --- a/MediaBrowser.Controller/Entities/Studio.cs +++ b/MediaBrowser.Controller/Entities/Studio.cs @@ -4,6 +4,7 @@ using System.Linq; using System.Runtime.Serialization; using MediaBrowser.Common.Extensions; using MediaBrowser.Controller.Extensions; +using MediaBrowser.Model.Extensions; namespace MediaBrowser.Controller.Entities { diff --git a/MediaBrowser.Controller/Extensions/BaseExtensions.cs b/MediaBrowser.Controller/Extensions/BaseExtensions.cs deleted file mode 100644 index 84a9b1524..000000000 --- a/MediaBrowser.Controller/Extensions/BaseExtensions.cs +++ /dev/null @@ -1,25 +0,0 @@ -using System; -using System.Globalization; -using System.Linq; -using System.Text; -using MediaBrowser.Model.Cryptography; - -namespace MediaBrowser.Controller.Extensions -{ - /// - /// Class BaseExtensions - /// - public static class BaseExtensions - { - public static ICryptographyProvider CryptographyProvider { get; set; } - - public static string RemoveDiacritics(this string text) - { - return String.Concat( - text.Normalize(NormalizationForm.FormD) - .Where(ch => CharUnicodeInfo.GetUnicodeCategory(ch) != - UnicodeCategory.NonSpacingMark) - ).Normalize(NormalizationForm.FormC); - } - } -} diff --git a/MediaBrowser.Controller/Extensions/StringExtensions.cs b/MediaBrowser.Controller/Extensions/StringExtensions.cs new file mode 100644 index 000000000..4f58d1bc5 --- /dev/null +++ b/MediaBrowser.Controller/Extensions/StringExtensions.cs @@ -0,0 +1,22 @@ +using System; +using System.Globalization; +using System.Linq; +using System.Text; + +namespace MediaBrowser.Controller.Extensions +{ + /// + /// Class BaseExtensions + /// + public static class StringExtensions + { + public static string RemoveDiacritics(this string text) + { + return String.Concat( + text.Normalize(NormalizationForm.FormD) + .Where(ch => CharUnicodeInfo.GetUnicodeCategory(ch) != + UnicodeCategory.NonSpacingMark) + ).Normalize(NormalizationForm.FormC); + } + } +} diff --git a/MediaBrowser.Controller/MediaBrowser.Controller.csproj b/MediaBrowser.Controller/MediaBrowser.Controller.csproj index 46277a783..670b08a3f 100644 --- a/MediaBrowser.Controller/MediaBrowser.Controller.csproj +++ b/MediaBrowser.Controller/MediaBrowser.Controller.csproj @@ -165,7 +165,7 @@ - + diff --git a/MediaBrowser.Model/Dlna/ConditionProcessor.cs b/MediaBrowser.Model/Dlna/ConditionProcessor.cs index 6628e290e..1fbb4ffa1 100644 --- a/MediaBrowser.Model/Dlna/ConditionProcessor.cs +++ b/MediaBrowser.Model/Dlna/ConditionProcessor.cs @@ -171,7 +171,7 @@ namespace MediaBrowser.Model.Dlna } bool expected; - if (BoolHelper.TryParseCultureInvariant(condition.Value, out expected)) + if (bool.TryParse(condition.Value, out expected)) { switch (condition.Condition) { @@ -196,7 +196,7 @@ namespace MediaBrowser.Model.Dlna } float expected; - if (FloatHelper.TryParseCultureInvariant(condition.Value, out expected)) + if (float.TryParse(condition.Value, NumberStyles.Any, CultureInfo.InvariantCulture, out expected)) { switch (condition.Condition) { @@ -225,7 +225,7 @@ namespace MediaBrowser.Model.Dlna } double expected; - if (DoubleHelper.TryParseCultureInvariant(condition.Value, out expected)) + if (double.TryParse(condition.Value, NumberStyles.Any, CultureInfo.InvariantCulture, out expected)) { switch (condition.Condition) { diff --git a/MediaBrowser.Model/Dlna/StreamBuilder.cs b/MediaBrowser.Model/Dlna/StreamBuilder.cs index a3e447d04..06a883c06 100644 --- a/MediaBrowser.Model/Dlna/StreamBuilder.cs +++ b/MediaBrowser.Model/Dlna/StreamBuilder.cs @@ -1111,7 +1111,7 @@ namespace MediaBrowser.Model.Dlna case ProfileConditionValue.VideoFramerate: { float num; - if (FloatHelper.TryParseCultureInvariant(value, out num)) + if (float.TryParse(value, NumberStyles.Any, CultureInfo.InvariantCulture, out num)) { item.MaxFramerate = num; } diff --git a/MediaBrowser.Model/Drawing/ImageSize.cs b/MediaBrowser.Model/Drawing/ImageSize.cs index 5ed6e7293..8cf09da18 100644 --- a/MediaBrowser.Model/Drawing/ImageSize.cs +++ b/MediaBrowser.Model/Drawing/ImageSize.cs @@ -1,4 +1,4 @@ -using MediaBrowser.Model.Extensions; +using System.Globalization; namespace MediaBrowser.Model.Drawing { @@ -71,12 +71,12 @@ namespace MediaBrowser.Model.Drawing { double val; - if (DoubleHelper.TryParseCultureInvariant(parts[0], out val)) + if (double.TryParse(parts[0], NumberStyles.Any, CultureInfo.InvariantCulture, out val)) { _width = val; } - if (DoubleHelper.TryParseCultureInvariant(parts[1], out val)) + if (double.TryParse(parts[1], NumberStyles.Any, CultureInfo.InvariantCulture, out val)) { _height = val; } diff --git a/MediaBrowser.Model/Extensions/BoolHelper.cs b/MediaBrowser.Model/Extensions/BoolHelper.cs deleted file mode 100644 index 5b61f864b..000000000 --- a/MediaBrowser.Model/Extensions/BoolHelper.cs +++ /dev/null @@ -1,16 +0,0 @@ -namespace MediaBrowser.Model.Extensions -{ - public static class BoolHelper - { - /// - /// Tries the parse culture invariant. - /// - /// The s. - /// The result. - /// true if XXXX, false otherwise. - public static bool TryParseCultureInvariant(string s, out bool result) - { - return bool.TryParse(s, out result); - } - } -} \ No newline at end of file diff --git a/MediaBrowser.Model/Extensions/DoubleHelper.cs b/MediaBrowser.Model/Extensions/DoubleHelper.cs deleted file mode 100644 index bcaf2d780..000000000 --- a/MediaBrowser.Model/Extensions/DoubleHelper.cs +++ /dev/null @@ -1,21 +0,0 @@ -using System.Globalization; - -namespace MediaBrowser.Model.Extensions -{ - /// - /// Isolating these helpers allow this entire project to be easily converted to Java - /// - public static class DoubleHelper - { - /// - /// Tries the parse culture invariant. - /// - /// The s. - /// The result. - /// true if XXXX, false otherwise. - public static bool TryParseCultureInvariant(string s, out double result) - { - return double.TryParse(s, NumberStyles.Any, CultureInfo.InvariantCulture, out result); - } - } -} diff --git a/MediaBrowser.Model/Extensions/FloatHelper.cs b/MediaBrowser.Model/Extensions/FloatHelper.cs deleted file mode 100644 index 171eccf93..000000000 --- a/MediaBrowser.Model/Extensions/FloatHelper.cs +++ /dev/null @@ -1,18 +0,0 @@ -using System.Globalization; - -namespace MediaBrowser.Model.Extensions -{ - public static class FloatHelper - { - /// - /// Tries the parse culture invariant. - /// - /// The s. - /// The result. - /// true if XXXX, false otherwise. - public static bool TryParseCultureInvariant(string s, out float result) - { - return float.TryParse(s, NumberStyles.Any, CultureInfo.InvariantCulture, out result); - } - } -} \ No newline at end of file diff --git a/MediaBrowser.Model/MediaBrowser.Model.csproj b/MediaBrowser.Model/MediaBrowser.Model.csproj index e5aac6c06..c0ff5464e 100644 --- a/MediaBrowser.Model/MediaBrowser.Model.csproj +++ b/MediaBrowser.Model/MediaBrowser.Model.csproj @@ -144,8 +144,6 @@ - - @@ -218,7 +216,6 @@ - @@ -389,6 +386,11 @@ + + + + + diff --git a/MediaBrowser.Model/Tasks/IScheduledTaskWorker.cs b/MediaBrowser.Model/Tasks/IScheduledTaskWorker.cs new file mode 100644 index 000000000..415207f8f --- /dev/null +++ b/MediaBrowser.Model/Tasks/IScheduledTaskWorker.cs @@ -0,0 +1,76 @@ +using System; +using MediaBrowser.Model.Events; + +namespace MediaBrowser.Model.Tasks +{ + /// + /// Interface IScheduledTaskWorker + /// + public interface IScheduledTaskWorker : IDisposable + { + /// + /// Occurs when [task progress]. + /// + event EventHandler> TaskProgress; + + /// + /// Gets or sets the scheduled task. + /// + /// The scheduled task. + IScheduledTask ScheduledTask { get; } + + /// + /// Gets the last execution result. + /// + /// The last execution result. + TaskResult LastExecutionResult { get; } + + /// + /// Gets the name. + /// + /// The name. + string Name { get; } + + /// + /// Gets the description. + /// + /// The description. + string Description { get; } + + /// + /// Gets the category. + /// + /// The category. + string Category { get; } + + /// + /// Gets the state. + /// + /// The state. + TaskState State { get; } + + /// + /// Gets the current progress. + /// + /// The current progress. + double? CurrentProgress { get; } + + /// + /// Gets the triggers that define when the task will run + /// + /// The triggers. + /// value + TaskTriggerInfo[] Triggers { get; set; } + + /// + /// Gets the unique id. + /// + /// The unique id. + string Id { get; } + + /// + /// Reloads the trigger events. + /// + void ReloadTriggerEvents(); + } +} \ No newline at end of file diff --git a/MediaBrowser.Model/Tasks/ITaskManager.cs b/MediaBrowser.Model/Tasks/ITaskManager.cs new file mode 100644 index 000000000..b6f847feb --- /dev/null +++ b/MediaBrowser.Model/Tasks/ITaskManager.cs @@ -0,0 +1,80 @@ +using System; +using System.Collections.Generic; +using System.Threading.Tasks; +using MediaBrowser.Model.Events; + +namespace MediaBrowser.Model.Tasks +{ + public interface ITaskManager : IDisposable + { + /// + /// Gets the list of Scheduled Tasks + /// + /// The scheduled tasks. + IScheduledTaskWorker[] ScheduledTasks { get; } + + /// + /// Cancels if running and queue. + /// + /// + /// Task options. + void CancelIfRunningAndQueue(TaskExecutionOptions options) + where T : IScheduledTask; + + /// + /// Cancels if running and queue. + /// + /// + void CancelIfRunningAndQueue() + where T : IScheduledTask; + + /// + /// Cancels if running. + /// + /// + void CancelIfRunning() + where T : IScheduledTask; + + /// + /// Queues the scheduled task. + /// + /// + /// Task options. + void QueueScheduledTask(TaskExecutionOptions options) + where T : IScheduledTask; + + /// + /// Queues the scheduled task. + /// + /// + void QueueScheduledTask() + where T : IScheduledTask; + + void QueueIfNotRunning() + where T : IScheduledTask; + + /// + /// Queues the scheduled task. + /// + /// The task. + /// The task run options. + void QueueScheduledTask(IScheduledTask task, TaskExecutionOptions options = null); + + /// + /// Adds the tasks. + /// + /// The tasks. + void AddTasks(IEnumerable tasks); + + void Cancel(IScheduledTaskWorker task); + Task Execute(IScheduledTaskWorker task, TaskExecutionOptions options = null); + + void Execute() + where T : IScheduledTask; + + event EventHandler> TaskExecuting; + event EventHandler TaskCompleted; + + bool SuspendTriggers { get; set; } + } +} \ No newline at end of file diff --git a/MediaBrowser.Model/Tasks/ITaskTrigger.cs b/MediaBrowser.Model/Tasks/ITaskTrigger.cs new file mode 100644 index 000000000..3beca569c --- /dev/null +++ b/MediaBrowser.Model/Tasks/ITaskTrigger.cs @@ -0,0 +1,35 @@ +using System; +using MediaBrowser.Model.Events; +using MediaBrowser.Model.Logging; + +namespace MediaBrowser.Model.Tasks +{ + /// + /// Interface ITaskTrigger + /// + public interface ITaskTrigger + { + /// + /// Fires when the trigger condition is satisfied and the task should run + /// + event EventHandler> Triggered; + + /// + /// Stars waiting for the trigger action + /// + void Start(TaskResult lastResult, ILogger logger, string taskName, bool isApplicationStartup); + + /// + /// Stops waiting for the trigger action + /// + void Stop(); + + /// + /// Gets or sets the execution properties of this task. + /// + /// + /// The execution properties of this task. + /// + TaskExecutionOptions TaskOptions { get; set; } + } +} \ No newline at end of file diff --git a/MediaBrowser.Model/Tasks/ScheduledTaskHelpers.cs b/MediaBrowser.Model/Tasks/ScheduledTaskHelpers.cs new file mode 100644 index 000000000..66f5294e7 --- /dev/null +++ b/MediaBrowser.Model/Tasks/ScheduledTaskHelpers.cs @@ -0,0 +1,52 @@ +using System; +using System.Linq; + +namespace MediaBrowser.Model.Tasks +{ + /// + /// Class ScheduledTaskHelpers + /// + public static class ScheduledTaskHelpers + { + /// + /// Gets the task info. + /// + /// The task. + /// TaskInfo. + public static TaskInfo GetTaskInfo(IScheduledTaskWorker task) + { + var isHidden = false; + + var configurableTask = task.ScheduledTask as IConfigurableScheduledTask; + + if (configurableTask != null) + { + isHidden = configurableTask.IsHidden; + } + + string key = task.ScheduledTask.Key; + + var triggers = task.Triggers + .OrderBy(i => i.Type) + .ThenBy(i => i.DayOfWeek ?? DayOfWeek.Sunday) + .ThenBy(i => i.TimeOfDayTicks ?? 0) + .ToList(); + + return new TaskInfo + { + Name = task.Name, + CurrentProgressPercentage = task.CurrentProgress, + State = task.State, + Id = task.Id, + LastExecutionResult = task.LastExecutionResult, + + Triggers = triggers, + + Description = task.Description, + Category = task.Category, + IsHidden = isHidden, + Key = key + }; + } + } +} diff --git a/MediaBrowser.Model/Tasks/TaskCompletionEventArgs.cs b/MediaBrowser.Model/Tasks/TaskCompletionEventArgs.cs new file mode 100644 index 000000000..be9eaa613 --- /dev/null +++ b/MediaBrowser.Model/Tasks/TaskCompletionEventArgs.cs @@ -0,0 +1,11 @@ +using System; + +namespace MediaBrowser.Model.Tasks +{ + public class TaskCompletionEventArgs : EventArgs + { + public IScheduledTaskWorker Task { get; set; } + + public TaskResult Result { get; set; } + } +} diff --git a/MediaBrowser.Providers/MediaInfo/SubtitleScheduledTask.cs b/MediaBrowser.Providers/MediaInfo/SubtitleScheduledTask.cs index f05bf3ab8..eaaab22fd 100644 --- a/MediaBrowser.Providers/MediaInfo/SubtitleScheduledTask.cs +++ b/MediaBrowser.Providers/MediaInfo/SubtitleScheduledTask.cs @@ -1,5 +1,4 @@ using MediaBrowser.Common.Configuration; -using MediaBrowser.Common.ScheduledTasks; using MediaBrowser.Controller.Configuration; using MediaBrowser.Controller.Entities; using MediaBrowser.Controller.Entities.Movies; diff --git a/MediaBrowser.Providers/TV/SeriesPostScanTask.cs b/MediaBrowser.Providers/TV/SeriesPostScanTask.cs index e038a3d28..fdea1b205 100644 --- a/MediaBrowser.Providers/TV/SeriesPostScanTask.cs +++ b/MediaBrowser.Providers/TV/SeriesPostScanTask.cs @@ -11,9 +11,9 @@ using System.Linq; using System.Threading; using System.Threading.Tasks; using CommonIO; -using MediaBrowser.Common.ScheduledTasks; using MediaBrowser.Controller.Entities; using MediaBrowser.Controller.Plugins; +using MediaBrowser.Model.Tasks; namespace MediaBrowser.Providers.TV { diff --git a/MediaBrowser.Server.Implementations/EntryPoints/ServerEventNotifier.cs b/MediaBrowser.Server.Implementations/EntryPoints/ServerEventNotifier.cs index 3ea8417f8..9fafc561f 100644 --- a/MediaBrowser.Server.Implementations/EntryPoints/ServerEventNotifier.cs +++ b/MediaBrowser.Server.Implementations/EntryPoints/ServerEventNotifier.cs @@ -13,6 +13,7 @@ using MediaBrowser.Model.Sync; using System; using System.Collections.Generic; using System.Threading; +using MediaBrowser.Model.Tasks; namespace MediaBrowser.Server.Implementations.EntryPoints { diff --git a/MediaBrowser.Server.Implementations/FileOrganization/FileOrganizationNotifier.cs b/MediaBrowser.Server.Implementations/FileOrganization/FileOrganizationNotifier.cs index 5c3814f66..940730b3b 100644 --- a/MediaBrowser.Server.Implementations/FileOrganization/FileOrganizationNotifier.cs +++ b/MediaBrowser.Server.Implementations/FileOrganization/FileOrganizationNotifier.cs @@ -7,6 +7,7 @@ using MediaBrowser.Model.FileOrganization; using MediaBrowser.Model.Logging; using System; using System.Threading; +using MediaBrowser.Model.Tasks; namespace MediaBrowser.Server.Implementations.FileOrganization { diff --git a/MediaBrowser.Server.Implementations/FileOrganization/FileOrganizationService.cs b/MediaBrowser.Server.Implementations/FileOrganization/FileOrganizationService.cs index a42eba6ca..9aa49946d 100644 --- a/MediaBrowser.Server.Implementations/FileOrganization/FileOrganizationService.cs +++ b/MediaBrowser.Server.Implementations/FileOrganization/FileOrganizationService.cs @@ -18,6 +18,7 @@ using CommonIO; using MediaBrowser.Controller.Session; using MediaBrowser.Model.Events; using MediaBrowser.Common.Events; +using MediaBrowser.Model.Tasks; namespace MediaBrowser.Server.Implementations.FileOrganization { diff --git a/MediaBrowser.Server.Implementations/IO/FileRefresher.cs b/MediaBrowser.Server.Implementations/IO/FileRefresher.cs index e689514c5..1c9a05753 100644 --- a/MediaBrowser.Server.Implementations/IO/FileRefresher.cs +++ b/MediaBrowser.Server.Implementations/IO/FileRefresher.cs @@ -12,6 +12,7 @@ using MediaBrowser.Controller.Entities; using MediaBrowser.Controller.Library; using MediaBrowser.Model.Extensions; using MediaBrowser.Model.Logging; +using MediaBrowser.Model.Tasks; using MediaBrowser.Server.Implementations.ScheduledTasks; namespace MediaBrowser.Server.Implementations.IO diff --git a/MediaBrowser.Server.Implementations/IO/LibraryMonitor.cs b/MediaBrowser.Server.Implementations/IO/LibraryMonitor.cs index 76f0e6a1d..36d912038 100644 --- a/MediaBrowser.Server.Implementations/IO/LibraryMonitor.cs +++ b/MediaBrowser.Server.Implementations/IO/LibraryMonitor.cs @@ -14,6 +14,7 @@ using System.Linq; using System.Threading.Tasks; using CommonIO; using MediaBrowser.Controller; +using MediaBrowser.Model.Tasks; namespace MediaBrowser.Server.Implementations.IO { diff --git a/MediaBrowser.Server.Implementations/Library/LibraryManager.cs b/MediaBrowser.Server.Implementations/Library/LibraryManager.cs index 6ccfa13ec..cf175f861 100644 --- a/MediaBrowser.Server.Implementations/Library/LibraryManager.cs +++ b/MediaBrowser.Server.Implementations/Library/LibraryManager.cs @@ -43,6 +43,7 @@ using MediaBrowser.Server.Implementations.Library.Resolvers; using SortOrder = MediaBrowser.Model.Entities.SortOrder; using VideoResolver = MediaBrowser.Naming.Video.VideoResolver; using MediaBrowser.Common.Configuration; +using MediaBrowser.Model.Tasks; namespace MediaBrowser.Server.Implementations.Library { diff --git a/MediaBrowser.Server.Implementations/Library/SearchEngine.cs b/MediaBrowser.Server.Implementations/Library/SearchEngine.cs index 3dff16e24..c266fb191 100644 --- a/MediaBrowser.Server.Implementations/Library/SearchEngine.cs +++ b/MediaBrowser.Server.Implementations/Library/SearchEngine.cs @@ -11,6 +11,7 @@ using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using MediaBrowser.Controller.Extensions; +using MediaBrowser.Model.Extensions; namespace MediaBrowser.Server.Implementations.Library { diff --git a/MediaBrowser.Server.Implementations/LiveTv/LiveTvManager.cs b/MediaBrowser.Server.Implementations/LiveTv/LiveTvManager.cs index 7c75abeec..3f8eb9025 100644 --- a/MediaBrowser.Server.Implementations/LiveTv/LiveTvManager.cs +++ b/MediaBrowser.Server.Implementations/LiveTv/LiveTvManager.cs @@ -35,6 +35,7 @@ using MediaBrowser.Controller.Entities.Movies; using MediaBrowser.Controller.Entities.TV; using MediaBrowser.Model.Events; using MediaBrowser.Model.Extensions; +using MediaBrowser.Model.Tasks; using MediaBrowser.Server.Implementations.LiveTv.Listings; namespace MediaBrowser.Server.Implementations.LiveTv diff --git a/MediaBrowser.Server.Implementations/Persistence/SqliteItemRepository.cs b/MediaBrowser.Server.Implementations/Persistence/SqliteItemRepository.cs index c76cbf8ae..e6512f4df 100644 --- a/MediaBrowser.Server.Implementations/Persistence/SqliteItemRepository.cs +++ b/MediaBrowser.Server.Implementations/Persistence/SqliteItemRepository.cs @@ -26,6 +26,7 @@ using MediaBrowser.Controller.Configuration; using MediaBrowser.Controller.Extensions; using MediaBrowser.Controller.Playlists; using MediaBrowser.Model.Dto; +using MediaBrowser.Model.Extensions; using MediaBrowser.Model.IO; using MediaBrowser.Model.LiveTv; using MediaBrowser.Server.Implementations.Devices; diff --git a/MediaBrowser.Server.Implementations/Sync/SyncManager.cs b/MediaBrowser.Server.Implementations/Sync/SyncManager.cs index eaf129e63..6bdb1692e 100644 --- a/MediaBrowser.Server.Implementations/Sync/SyncManager.cs +++ b/MediaBrowser.Server.Implementations/Sync/SyncManager.cs @@ -31,6 +31,7 @@ using System.Threading.Tasks; using CommonIO; using MediaBrowser.Common.IO; using MediaBrowser.Model.IO; +using MediaBrowser.Model.Tasks; namespace MediaBrowser.Server.Implementations.Sync { diff --git a/MediaBrowser.Server.Startup.Common/Migrations/DbMigration.cs b/MediaBrowser.Server.Startup.Common/Migrations/DbMigration.cs index 6bcdcca87..5705b3a59 100644 --- a/MediaBrowser.Server.Startup.Common/Migrations/DbMigration.cs +++ b/MediaBrowser.Server.Startup.Common/Migrations/DbMigration.cs @@ -1,6 +1,7 @@ using System.Threading.Tasks; using MediaBrowser.Common.ScheduledTasks; using MediaBrowser.Controller.Configuration; +using MediaBrowser.Model.Tasks; using MediaBrowser.Server.Implementations.Persistence; namespace MediaBrowser.Server.Startup.Common.Migrations -- cgit v1.2.3