浏览代码

Migrate ServerEventNotifier.OnHasPendingRestartChanged to IEventConsumer

Patrick Barron 4 年之前
父节点
当前提交
dc88e93504

+ 0 - 23
Emby.Server.Implementations/EntryPoints/ServerEventNotifier.cs

@@ -3,7 +3,6 @@ using System.Threading;
 using System.Threading.Tasks;
 using MediaBrowser.Common.Plugins;
 using MediaBrowser.Common.Updates;
-using MediaBrowser.Controller;
 using MediaBrowser.Controller.Plugins;
 using MediaBrowser.Controller.Session;
 using MediaBrowser.Model.Updates;
@@ -20,34 +19,24 @@ namespace Emby.Server.Implementations.EntryPoints
         /// </summary>
         private readonly IInstallationManager _installationManager;
 
-        /// <summary>
-        /// The kernel.
-        /// </summary>
-        private readonly IServerApplicationHost _appHost;
-
         private readonly ISessionManager _sessionManager;
 
         /// <summary>
         /// Initializes a new instance of the <see cref="ServerEventNotifier"/> class.
         /// </summary>
-        /// <param name="appHost">The application host.</param>
         /// <param name="installationManager">The installation manager.</param>
         /// <param name="sessionManager">The session manager.</param>
         public ServerEventNotifier(
-            IServerApplicationHost appHost,
             IInstallationManager installationManager,
             ISessionManager sessionManager)
         {
             _installationManager = installationManager;
-            _appHost = appHost;
             _sessionManager = sessionManager;
         }
 
         /// <inheritdoc />
         public Task RunAsync()
         {
-            _appHost.HasPendingRestartChanged += OnHasPendingRestartChanged;
-
             _installationManager.PluginUninstalled += OnPluginUninstalled;
             _installationManager.PackageInstalling += OnPackageInstalling;
             _installationManager.PackageInstallationCancelled += OnPackageInstallationCancelled;
@@ -87,16 +76,6 @@ namespace Emby.Server.Implementations.EntryPoints
             await SendMessageToAdminSessions("PluginUninstalled", e).ConfigureAwait(false);
         }
 
-        /// <summary>
-        /// Handles the HasPendingRestartChanged event of the kernel control.
-        /// </summary>
-        /// <param name="sender">The source of the event.</param>
-        /// <param name="e">The <see cref="EventArgs" /> instance containing the event data.</param>
-        private async void OnHasPendingRestartChanged(object sender, EventArgs e)
-        {
-            await _sessionManager.SendRestartRequiredNotification(CancellationToken.None).ConfigureAwait(false);
-        }
-
         private async Task SendMessageToAdminSessions<T>(string name, T data)
         {
             try
@@ -128,8 +107,6 @@ namespace Emby.Server.Implementations.EntryPoints
                 _installationManager.PackageInstallationCancelled -= OnPackageInstallationCancelled;
                 _installationManager.PackageInstallationCompleted -= OnPackageInstallationCompleted;
                 _installationManager.PackageInstallationFailed -= OnPackageInstallationFailed;
-
-                _appHost.HasPendingRestartChanged -= OnHasPendingRestartChanged;
             }
         }
     }

+ 11 - 0
Jellyfin.Data/Events/System/PendingRestartEventArgs.cs

@@ -0,0 +1,11 @@
+using System;
+
+namespace Jellyfin.Data.Events.System
+{
+    /// <summary>
+    /// An event that fires when there is a pending restart.
+    /// </summary>
+    public class PendingRestartEventArgs : EventArgs
+    {
+    }
+}

+ 31 - 0
Jellyfin.Server.Implementations/Events/Consumers/System/PendingRestartNotifier.cs

@@ -0,0 +1,31 @@
+using System.Threading;
+using System.Threading.Tasks;
+using Jellyfin.Data.Events.System;
+using MediaBrowser.Controller.Events;
+using MediaBrowser.Controller.Session;
+
+namespace Jellyfin.Server.Implementations.Events.Consumers.System
+{
+    /// <summary>
+    /// Notifies users when there is a pending restart.
+    /// </summary>
+    public class PendingRestartNotifier : IEventConsumer<PendingRestartEventArgs>
+    {
+        private readonly ISessionManager _sessionManager;
+
+        /// <summary>
+        /// Initializes a new instance of the <see cref="PendingRestartNotifier"/> class.
+        /// </summary>
+        /// <param name="sessionManager">The session manager.</param>
+        public PendingRestartNotifier(ISessionManager sessionManager)
+        {
+            _sessionManager = sessionManager;
+        }
+
+        /// <inheritdoc />
+        public async Task OnEvent(PendingRestartEventArgs eventArgs)
+        {
+            await _sessionManager.SendRestartRequiredNotification(CancellationToken.None).ConfigureAwait(false);
+        }
+    }
+}