From 53450bd514eec97d58eb18b8a01feab36475826b Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Sat, 6 Jul 2013 17:23:32 -0400 Subject: added a notifications service --- .../BaseApplicationHost.cs | 18 --------------- .../ScheduledTasks/ScheduledTaskWorker.cs | 15 +++++++++--- .../Updates/InstallationManager.cs | 27 +++++++++++++++------- 3 files changed, 31 insertions(+), 29 deletions(-) (limited to 'MediaBrowser.Common.Implementations') diff --git a/MediaBrowser.Common.Implementations/BaseApplicationHost.cs b/MediaBrowser.Common.Implementations/BaseApplicationHost.cs index 46c84ff7d..197142590 100644 --- a/MediaBrowser.Common.Implementations/BaseApplicationHost.cs +++ b/MediaBrowser.Common.Implementations/BaseApplicationHost.cs @@ -512,24 +512,6 @@ namespace MediaBrowser.Common.Implementations Plugins = list; } - /// - /// Performs the pending restart. - /// - /// Task. - public void PerformPendingRestart() - { - if (HasPendingRestart) - { - Logger.Info("Restarting the application"); - - Restart(); - } - else - { - Logger.Info("PerformPendingRestart - not needed"); - } - } - /// /// Notifies that the kernel that a change has been made that requires a restart /// diff --git a/MediaBrowser.Common.Implementations/ScheduledTasks/ScheduledTaskWorker.cs b/MediaBrowser.Common.Implementations/ScheduledTasks/ScheduledTaskWorker.cs index 336718249..8947bdcc0 100644 --- a/MediaBrowser.Common.Implementations/ScheduledTasks/ScheduledTaskWorker.cs +++ b/MediaBrowser.Common.Implementations/ScheduledTasks/ScheduledTaskWorker.cs @@ -343,6 +343,8 @@ namespace MediaBrowser.Common.Implementations.ScheduledTasks TaskCompletionStatus status; CurrentExecutionStartTime = DateTime.UtcNow; + Exception failureException = null; + try { await ExecuteTask(CurrentCancellationTokenSource.Token, progress).ConfigureAwait(false); @@ -357,6 +359,8 @@ namespace MediaBrowser.Common.Implementations.ScheduledTasks { Logger.ErrorException("Error", ex); + failureException = ex; + status = TaskCompletionStatus.Failed; } @@ -368,7 +372,7 @@ namespace MediaBrowser.Common.Implementations.ScheduledTasks CurrentCancellationTokenSource = null; CurrentProgress = null; - OnTaskCompleted(startTime, endTime, status); + OnTaskCompleted(startTime, endTime, status, failureException); } /// @@ -517,7 +521,7 @@ namespace MediaBrowser.Common.Implementations.ScheduledTasks /// The start time. /// The end time. /// The status. - private void OnTaskCompleted(DateTime startTime, DateTime endTime, TaskCompletionStatus status) + private void OnTaskCompleted(DateTime startTime, DateTime endTime, TaskCompletionStatus status, Exception ex) { var elapsedTime = endTime - startTime; @@ -532,6 +536,11 @@ namespace MediaBrowser.Common.Implementations.ScheduledTasks Id = Id }; + if (ex != null) + { + result.ErrorMessage = ex.Message; + } + JsonSerializer.SerializeToFile(result, GetHistoryFilePath(true)); LastExecutionResult = result; @@ -560,7 +569,7 @@ namespace MediaBrowser.Common.Implementations.ScheduledTasks if (State == TaskState.Running) { - OnTaskCompleted(CurrentExecutionStartTime, DateTime.UtcNow, TaskCompletionStatus.Aborted); + OnTaskCompleted(CurrentExecutionStartTime, DateTime.UtcNow, TaskCompletionStatus.Aborted, null); } if (CurrentCancellationTokenSource != null) diff --git a/MediaBrowser.Common.Implementations/Updates/InstallationManager.cs b/MediaBrowser.Common.Implementations/Updates/InstallationManager.cs index ba2cd7baa..e7af4004b 100644 --- a/MediaBrowser.Common.Implementations/Updates/InstallationManager.cs +++ b/MediaBrowser.Common.Implementations/Updates/InstallationManager.cs @@ -21,10 +21,10 @@ namespace MediaBrowser.Common.Implementations.Updates /// public class InstallationManager : IInstallationManager { - public event EventHandler> PackageInstalling; - public event EventHandler> PackageInstallationCompleted; - public event EventHandler> PackageInstallationFailed; - public event EventHandler> PackageInstallationCancelled; + public event EventHandler PackageInstalling; + public event EventHandler PackageInstallationCompleted; + public event EventHandler PackageInstallationFailed; + public event EventHandler PackageInstallationCancelled; /// /// The current installations @@ -384,7 +384,13 @@ namespace MediaBrowser.Common.Implementations.Updates var linkedToken = CancellationTokenSource.CreateLinkedTokenSource(cancellationToken, innerCancellationTokenSource.Token).Token; - EventHelper.QueueEventIfNotNull(PackageInstalling, this, new GenericEventArgs { Argument = installationInfo }, _logger); + var installationEventArgs = new InstallationEventArgs + { + InstallationInfo = installationInfo, + PackageVersionInfo = package + }; + + EventHelper.QueueEventIfNotNull(PackageInstalling, this, installationEventArgs, _logger); try { @@ -397,7 +403,7 @@ namespace MediaBrowser.Common.Implementations.Updates CompletedInstallations.Add(installationInfo); - EventHelper.QueueEventIfNotNull(PackageInstallationCompleted, this, new GenericEventArgs { Argument = installationInfo }, _logger); + EventHelper.QueueEventIfNotNull(PackageInstallationCompleted, this, installationEventArgs, _logger); } catch (OperationCanceledException) { @@ -408,7 +414,7 @@ namespace MediaBrowser.Common.Implementations.Updates _logger.Info("Package installation cancelled: {0} {1}", package.name, package.versionStr); - EventHelper.QueueEventIfNotNull(PackageInstallationCancelled, this, new GenericEventArgs { Argument = installationInfo }, _logger); + EventHelper.QueueEventIfNotNull(PackageInstallationCancelled, this, installationEventArgs, _logger); throw; } @@ -421,7 +427,12 @@ namespace MediaBrowser.Common.Implementations.Updates CurrentInstallations.Remove(tuple); } - EventHelper.QueueEventIfNotNull(PackageInstallationFailed, this, new GenericEventArgs { Argument = installationInfo }, _logger); + EventHelper.QueueEventIfNotNull(PackageInstallationFailed, this, new InstallationFailedEventArgs + { + InstallationInfo = installationInfo, + Exception = ex + + }, _logger); throw; } -- cgit v1.2.3