From af7aa597c35279e286ee88641854db69744e7b15 Mon Sep 17 00:00:00 2001 From: LukePulverenti Date: Thu, 28 Feb 2013 14:32:41 -0500 Subject: referenced core plugins, fixed some dashboard issues, extracted library manager --- .../NetworkManagement/NetworkManager.cs | 32 +++++++++------- .../ScheduledTasks/ScheduledTaskWorker.cs | 44 +++++++++++++++++++--- 2 files changed, 58 insertions(+), 18 deletions(-) (limited to 'MediaBrowser.Common.Implementations') diff --git a/MediaBrowser.Common.Implementations/NetworkManagement/NetworkManager.cs b/MediaBrowser.Common.Implementations/NetworkManagement/NetworkManager.cs index 51b37944c3..c0038de2eb 100644 --- a/MediaBrowser.Common.Implementations/NetworkManagement/NetworkManager.cs +++ b/MediaBrowser.Common.Implementations/NetworkManagement/NetworkManager.cs @@ -244,21 +244,27 @@ namespace MediaBrowser.Common.Implementations.NetworkManagement /// Unknown share type private NetworkShareType ToNetworkShareType(ShareType shareType) { - switch (shareType) + if (shareType.HasFlag(ShareType.Special)) { - case ShareType.Device: - return NetworkShareType.Device; - case ShareType.Disk : - return NetworkShareType.Disk; - case ShareType.IPC : - return NetworkShareType.Ipc; - case ShareType.Printer : - return NetworkShareType.Printer; - case ShareType.Special: - return NetworkShareType.Special; - default: - throw new ArgumentException("Unknown share type"); + return NetworkShareType.Special; } + if (shareType.HasFlag(ShareType.Device)) + { + return NetworkShareType.Device; + } + if (shareType.HasFlag(ShareType.Disk)) + { + return NetworkShareType.Disk; + } + if (shareType.HasFlag(ShareType.IPC)) + { + return NetworkShareType.Ipc; + } + if (shareType.HasFlag(ShareType.Printer)) + { + return NetworkShareType.Printer; + } + throw new ArgumentException("Unknown share type"); } /// diff --git a/MediaBrowser.Common.Implementations/ScheduledTasks/ScheduledTaskWorker.cs b/MediaBrowser.Common.Implementations/ScheduledTasks/ScheduledTaskWorker.cs index 4ecb8f0ef8..e618b6f552 100644 --- a/MediaBrowser.Common.Implementations/ScheduledTasks/ScheduledTaskWorker.cs +++ b/MediaBrowser.Common.Implementations/ScheduledTasks/ScheduledTaskWorker.cs @@ -65,6 +65,31 @@ namespace MediaBrowser.Common.Implementations.ScheduledTasks /// The server manager. public ScheduledTaskWorker(IScheduledTask scheduledTask, IApplicationPaths applicationPaths, ITaskManager taskManager, IJsonSerializer jsonSerializer, ILogger logger, IServerManager serverManager) { + if (scheduledTask == null) + { + throw new ArgumentNullException("scheduledTask"); + } + if (applicationPaths == null) + { + throw new ArgumentNullException("applicationPaths"); + } + if (taskManager == null) + { + throw new ArgumentNullException("taskManager"); + } + if (jsonSerializer == null) + { + throw new ArgumentNullException("jsonSerializer"); + } + if (logger == null) + { + throw new ArgumentNullException("logger"); + } + if (serverManager == null) + { + throw new ArgumentNullException("serverManager"); + } + ScheduledTask = scheduledTask; ApplicationPaths = applicationPaths; TaskManager = taskManager; @@ -316,7 +341,7 @@ namespace MediaBrowser.Common.Implementations.ScheduledTasks try { - await System.Threading.Tasks.Task.Run(async () => await ScheduledTask.Execute(CurrentCancellationTokenSource.Token, progress).ConfigureAwait(false)).ConfigureAwait(false); + await ExecuteTask(CurrentCancellationTokenSource.Token, progress).ConfigureAwait(false); status = TaskCompletionStatus.Completed; } @@ -334,8 +359,6 @@ namespace MediaBrowser.Common.Implementations.ScheduledTasks var startTime = CurrentExecutionStartTime; var endTime = DateTime.UtcNow; - ServerManager.SendWebSocketMessage("ScheduledTaskEndExecute", LastExecutionResult); - progress.ProgressChanged -= progress_ProgressChanged; CurrentCancellationTokenSource.Dispose(); CurrentCancellationTokenSource = null; @@ -344,6 +367,11 @@ namespace MediaBrowser.Common.Implementations.ScheduledTasks OnTaskCompleted(startTime, endTime, status); } + private Task ExecuteTask(CancellationToken cancellationToken, IProgress progress) + { + return Task.Run(async () => await ScheduledTask.Execute(cancellationToken, progress).ConfigureAwait(false)); + } + /// /// Progress_s the progress changed. /// @@ -482,7 +510,8 @@ namespace MediaBrowser.Common.Implementations.ScheduledTasks /// The start time. /// The end time. /// The status. - private void OnTaskCompleted(DateTime startTime, DateTime endTime, TaskCompletionStatus status) + /// if set to true [send notification]. + private void OnTaskCompleted(DateTime startTime, DateTime endTime, TaskCompletionStatus status, bool sendNotification = true) { var elapsedTime = endTime - startTime; @@ -500,6 +529,11 @@ namespace MediaBrowser.Common.Implementations.ScheduledTasks JsonSerializer.SerializeToFile(result, GetHistoryFilePath()); LastExecutionResult = result; + + if (sendNotification) + { + ServerManager.SendWebSocketMessage("ScheduledTaskEndExecute", result); + } } /// @@ -523,7 +557,7 @@ namespace MediaBrowser.Common.Implementations.ScheduledTasks if (State == TaskState.Running) { - OnTaskCompleted(CurrentExecutionStartTime, DateTime.UtcNow, TaskCompletionStatus.Aborted); + OnTaskCompleted(CurrentExecutionStartTime, DateTime.UtcNow, TaskCompletionStatus.Aborted, false); } if (CurrentCancellationTokenSource != null) -- cgit v1.2.3