diff options
Diffstat (limited to 'MediaBrowser.Api')
| -rw-r--r-- | MediaBrowser.Api/SystemService.cs | 32 | ||||
| -rw-r--r-- | MediaBrowser.Api/WebSocket/LogFileWebSocketListener.cs | 13 |
2 files changed, 38 insertions, 7 deletions
diff --git a/MediaBrowser.Api/SystemService.cs b/MediaBrowser.Api/SystemService.cs index cf0be35a2..55e8ee693 100644 --- a/MediaBrowser.Api/SystemService.cs +++ b/MediaBrowser.Api/SystemService.cs @@ -1,4 +1,5 @@ using MediaBrowser.Common.Extensions; +using MediaBrowser.Common.Kernel; using MediaBrowser.Controller; using MediaBrowser.Model.Configuration; using MediaBrowser.Model.Serialization; @@ -29,6 +30,11 @@ namespace MediaBrowser.Api { } + [Route("/System/Shutdown", "POST")] + public class ShutdownApplication + { + } + /// <summary> /// Class GetConfiguration /// </summary> @@ -62,18 +68,29 @@ namespace MediaBrowser.Api private readonly IJsonSerializer _jsonSerializer; /// <summary> + /// The _app host + /// </summary> + private readonly IApplicationHost _appHost; + + /// <summary> /// Initializes a new instance of the <see cref="SystemService" /> class. /// </summary> /// <param name="jsonSerializer">The json serializer.</param> + /// <param name="appHost">The app host.</param> /// <exception cref="System.ArgumentNullException">jsonSerializer</exception> - public SystemService(IJsonSerializer jsonSerializer) + public SystemService(IJsonSerializer jsonSerializer, IApplicationHost appHost) : base() { if (jsonSerializer == null) { throw new ArgumentNullException("jsonSerializer"); } + if (appHost == null) + { + throw new ArgumentNullException("appHost"); + } + _appHost = appHost; _jsonSerializer = jsonSerializer; } @@ -119,6 +136,19 @@ namespace MediaBrowser.Api } /// <summary> + /// Posts the specified request. + /// </summary> + /// <param name="request">The request.</param> + public void Post(ShutdownApplication request) + { + Task.Run(async () => + { + await Task.Delay(100); + _appHost.Shutdown(); + }); + } + + /// <summary> /// Posts the specified configuraiton. /// </summary> /// <param name="request">The request.</param> diff --git a/MediaBrowser.Api/WebSocket/LogFileWebSocketListener.cs b/MediaBrowser.Api/WebSocket/LogFileWebSocketListener.cs index 6e3e10361..e0879d924 100644 --- a/MediaBrowser.Api/WebSocket/LogFileWebSocketListener.cs +++ b/MediaBrowser.Api/WebSocket/LogFileWebSocketListener.cs @@ -1,6 +1,5 @@ using MediaBrowser.Common.IO; using MediaBrowser.Common.Kernel; -using MediaBrowser.Controller; using MediaBrowser.Model.Logging; using System; using System.Collections.Generic; @@ -27,18 +26,20 @@ namespace MediaBrowser.Api.WebSocket /// <summary> /// The _kernel /// </summary> + private readonly IApplicationHost _appHost; private readonly IKernel _kernel; - + /// <summary> /// Initializes a new instance of the <see cref="LogFileWebSocketListener" /> class. /// </summary> /// <param name="logger">The logger.</param> /// <param name="kernel">The kernel.</param> - public LogFileWebSocketListener(ILogger logger, Kernel kernel) + public LogFileWebSocketListener(ILogger logger, IApplicationHost host, IKernel kernel) : base(logger) { + _appHost = host; _kernel = kernel; - _kernel.LoggerLoaded += kernel_LoggerLoaded; + kernel.LoggerLoaded += kernel_LoggerLoaded; } /// <summary> @@ -48,9 +49,9 @@ namespace MediaBrowser.Api.WebSocket /// <returns>IEnumerable{System.String}.</returns> protected override async Task<IEnumerable<string>> GetDataToSend(LogFileWebSocketState state) { - if (!string.Equals(_kernel.LogFilePath, state.LastLogFilePath)) + if (!string.Equals(_appHost.LogFilePath, state.LastLogFilePath)) { - state.LastLogFilePath = _kernel.LogFilePath; + state.LastLogFilePath = _appHost.LogFilePath; state.StartLine = 0; } |
