diff options
| author | Greenback <jimcartlidge@yahoo.co.uk> | 2020-11-28 00:25:20 +0000 |
|---|---|---|
| committer | Greenback <jimcartlidge@yahoo.co.uk> | 2020-11-28 00:25:20 +0000 |
| commit | 5cd5a7d4cebe134d8256d4a1b6eadff760fbb2a7 (patch) | |
| tree | f875a664bd2fc4ce05f772322102ba620917484d /Emby.Server.Implementations/HttpServer/WebSocketManager.cs | |
| parent | a59aeb12e07e7ee1f5453e94aefdc19a190f7d16 (diff) | |
Removed Lazy implementation.
Diffstat (limited to 'Emby.Server.Implementations/HttpServer/WebSocketManager.cs')
| -rw-r--r-- | Emby.Server.Implementations/HttpServer/WebSocketManager.cs | 31 |
1 files changed, 14 insertions, 17 deletions
diff --git a/Emby.Server.Implementations/HttpServer/WebSocketManager.cs b/Emby.Server.Implementations/HttpServer/WebSocketManager.cs index 71ece80a7..5518fb95a 100644 --- a/Emby.Server.Implementations/HttpServer/WebSocketManager.cs +++ b/Emby.Server.Implementations/HttpServer/WebSocketManager.cs @@ -4,7 +4,9 @@ using System; using System.Collections.Generic; using System.Net.WebSockets; using System.Threading.Tasks; -using Jellyfin.Data.Events; +using Emby.Server.Implementations.Session; +using Jellyfin.Api.WebSocketListeners; +using MediaBrowser.Controller; using MediaBrowser.Controller.Net; using Microsoft.AspNetCore.Http; using Microsoft.Extensions.Logging; @@ -13,24 +15,21 @@ namespace Emby.Server.Implementations.HttpServer { public class WebSocketManager : IWebSocketManager { - private readonly Lazy<IEnumerable<IWebSocketListener>> _webSocketListeners; + private readonly IServerApplicationHost _appHost; private readonly ILogger<WebSocketManager> _logger; private readonly ILoggerFactory _loggerFactory; - private bool _disposed = false; public WebSocketManager( - Lazy<IEnumerable<IWebSocketListener>> webSocketListeners, + IServerApplicationHost appHost, ILogger<WebSocketManager> logger, ILoggerFactory loggerFactory) { - _webSocketListeners = webSocketListeners; + _appHost = appHost; _logger = logger; _loggerFactory = loggerFactory; } - public event EventHandler<GenericEventArgs<IWebSocketConnection>> WebSocketConnected; - /// <inheritdoc /> public async Task WebSocketRequestHandler(HttpContext context) { @@ -39,6 +38,8 @@ namespace Emby.Server.Implementations.HttpServer return; } + var listener = _appHost.Resolve<ISessionWebSocketListener>(); + try { _logger.LogInformation("WS {IP} request", context.Connection.RemoteIpAddress); @@ -54,7 +55,7 @@ namespace Emby.Server.Implementations.HttpServer OnReceive = ProcessWebSocketMessageReceived }; - WebSocketConnected?.Invoke(this, new GenericEventArgs<IWebSocketConnection>(connection)); + listener?.ProcessWebSocketConnected(connection); await connection.ProcessAsync().ConfigureAwait(false); _logger.LogInformation("WS {IP} closed", context.Connection.RemoteIpAddress); @@ -80,16 +81,12 @@ namespace Emby.Server.Implementations.HttpServer return Task.CompletedTask; } - IEnumerable<Task> GetTasks() - { - var listeners = _webSocketListeners.Value; - foreach (var x in listeners) - { - yield return x.ProcessMessageAsync(result); - } - } + Parallel.Invoke( + () => _appHost.Resolve<IActivityLogWebSocketListener>(), + () => _appHost.Resolve<IScheduledTasksWebSocketListener>(), + () => _appHost.Resolve<ISessionInfoWebSocketListener>()); - return Task.WhenAll(GetTasks()); + return Task.CompletedTask; } } } |
