From 1a0d8aef80a066fdefec4d757d5dcba0dfe0a03c Mon Sep 17 00:00:00 2001 From: cvium Date: Sat, 28 Nov 2020 09:50:16 +0100 Subject: Revert "Removed Lazy implementation." --- .../HttpServer/WebSocketManager.cs | 31 ++++++++++++---------- 1 file changed, 17 insertions(+), 14 deletions(-) (limited to 'Emby.Server.Implementations/HttpServer/WebSocketManager.cs') diff --git a/Emby.Server.Implementations/HttpServer/WebSocketManager.cs b/Emby.Server.Implementations/HttpServer/WebSocketManager.cs index 5518fb95a..71ece80a7 100644 --- a/Emby.Server.Implementations/HttpServer/WebSocketManager.cs +++ b/Emby.Server.Implementations/HttpServer/WebSocketManager.cs @@ -4,9 +4,7 @@ using System; using System.Collections.Generic; using System.Net.WebSockets; using System.Threading.Tasks; -using Emby.Server.Implementations.Session; -using Jellyfin.Api.WebSocketListeners; -using MediaBrowser.Controller; +using Jellyfin.Data.Events; using MediaBrowser.Controller.Net; using Microsoft.AspNetCore.Http; using Microsoft.Extensions.Logging; @@ -15,21 +13,24 @@ namespace Emby.Server.Implementations.HttpServer { public class WebSocketManager : IWebSocketManager { - private readonly IServerApplicationHost _appHost; + private readonly Lazy> _webSocketListeners; private readonly ILogger _logger; private readonly ILoggerFactory _loggerFactory; + private bool _disposed = false; public WebSocketManager( - IServerApplicationHost appHost, + Lazy> webSocketListeners, ILogger logger, ILoggerFactory loggerFactory) { - _appHost = appHost; + _webSocketListeners = webSocketListeners; _logger = logger; _loggerFactory = loggerFactory; } + public event EventHandler> WebSocketConnected; + /// public async Task WebSocketRequestHandler(HttpContext context) { @@ -38,8 +39,6 @@ namespace Emby.Server.Implementations.HttpServer return; } - var listener = _appHost.Resolve(); - try { _logger.LogInformation("WS {IP} request", context.Connection.RemoteIpAddress); @@ -55,7 +54,7 @@ namespace Emby.Server.Implementations.HttpServer OnReceive = ProcessWebSocketMessageReceived }; - listener?.ProcessWebSocketConnected(connection); + WebSocketConnected?.Invoke(this, new GenericEventArgs(connection)); await connection.ProcessAsync().ConfigureAwait(false); _logger.LogInformation("WS {IP} closed", context.Connection.RemoteIpAddress); @@ -81,12 +80,16 @@ namespace Emby.Server.Implementations.HttpServer return Task.CompletedTask; } - Parallel.Invoke( - () => _appHost.Resolve(), - () => _appHost.Resolve(), - () => _appHost.Resolve()); + IEnumerable GetTasks() + { + var listeners = _webSocketListeners.Value; + foreach (var x in listeners) + { + yield return x.ProcessMessageAsync(result); + } + } - return Task.CompletedTask; + return Task.WhenAll(GetTasks()); } } } -- cgit v1.2.3