aboutsummaryrefslogtreecommitdiff
path: root/Emby.Server.Implementations/Session/SessionWebSocketListener.cs
diff options
context:
space:
mode:
authorcvium <clausvium@gmail.com>2020-11-28 09:50:16 +0100
committercvium <clausvium@gmail.com>2020-11-28 09:50:16 +0100
commit1a0d8aef80a066fdefec4d757d5dcba0dfe0a03c (patch)
tree5b1fafe68e6d8207fdbdb29541e43a40f55494cc /Emby.Server.Implementations/Session/SessionWebSocketListener.cs
parent5cd5a7d4cebe134d8256d4a1b6eadff760fbb2a7 (diff)
Revert "Removed Lazy implementation."
Diffstat (limited to 'Emby.Server.Implementations/Session/SessionWebSocketListener.cs')
-rw-r--r--Emby.Server.Implementations/Session/SessionWebSocketListener.cs27
1 files changed, 17 insertions, 10 deletions
diff --git a/Emby.Server.Implementations/Session/SessionWebSocketListener.cs b/Emby.Server.Implementations/Session/SessionWebSocketListener.cs
index 8f81ee194..a5f847953 100644
--- a/Emby.Server.Implementations/Session/SessionWebSocketListener.cs
+++ b/Emby.Server.Implementations/Session/SessionWebSocketListener.cs
@@ -17,7 +17,7 @@ namespace Emby.Server.Implementations.Session
/// <summary>
/// Class SessionWebSocketListener.
/// </summary>
- public sealed class SessionWebSocketListener : ISessionWebSocketListener, IDisposable
+ public sealed class SessionWebSocketListener : IWebSocketListener, IDisposable
{
/// <summary>
/// The timeout in seconds after which a WebSocket is considered to be lost.
@@ -45,13 +45,15 @@ namespace Emby.Server.Implementations.Session
private readonly ILogger<SessionWebSocketListener> _logger;
private readonly ILoggerFactory _loggerFactory;
+ private readonly IWebSocketManager _webSocketManager;
+
/// <summary>
/// The KeepAlive cancellation token.
/// </summary>
private CancellationTokenSource _keepAliveCancellationToken;
/// <summary>
- /// Lock used for accessing the KeepAlive cancellation token.
+ /// Lock used for accesing the KeepAlive cancellation token.
/// </summary>
private readonly object _keepAliveLock = new object();
@@ -61,7 +63,7 @@ namespace Emby.Server.Implementations.Session
private readonly HashSet<IWebSocketConnection> _webSockets = new HashSet<IWebSocketConnection>();
/// <summary>
- /// Lock used for accessing the WebSockets watchlist.
+ /// Lock used for accesing the WebSockets watchlist.
/// </summary>
private readonly object _webSocketsLock = new object();
@@ -71,28 +73,32 @@ namespace Emby.Server.Implementations.Session
/// <param name="logger">The logger.</param>
/// <param name="sessionManager">The session manager.</param>
/// <param name="loggerFactory">The logger factory.</param>
+ /// <param name="webSocketManager">The HTTP server.</param>
public SessionWebSocketListener(
ILogger<SessionWebSocketListener> logger,
ISessionManager sessionManager,
- ILoggerFactory loggerFactory)
+ ILoggerFactory loggerFactory,
+ IWebSocketManager webSocketManager)
{
_logger = logger;
_sessionManager = sessionManager;
_loggerFactory = loggerFactory;
+ _webSocketManager = webSocketManager;
+
+ webSocketManager.WebSocketConnected += OnServerManagerWebSocketConnected;
}
- /// <inheritdoc/>
- public async void ProcessWebSocketConnected(IWebSocketConnection websocketConnection)
+ private async void OnServerManagerWebSocketConnected(object sender, GenericEventArgs<IWebSocketConnection> e)
{
- var session = GetSession(websocketConnection.QueryString, websocketConnection.RemoteEndPoint.ToString());
+ var session = GetSession(e.Argument.QueryString, e.Argument.RemoteEndPoint.ToString());
if (session != null)
{
- EnsureController(session, websocketConnection);
- await KeepAliveWebSocket(websocketConnection).ConfigureAwait(false);
+ EnsureController(session, e.Argument);
+ await KeepAliveWebSocket(e.Argument).ConfigureAwait(false);
}
else
{
- _logger.LogWarning("Unable to determine session based on query string: {Querystring}", websocketConnection.QueryString);
+ _logger.LogWarning("Unable to determine session based on query string: {0}", e.Argument.QueryString);
}
}
@@ -116,6 +122,7 @@ namespace Emby.Server.Implementations.Session
/// <inheritdoc />
public void Dispose()
{
+ _webSocketManager.WebSocketConnected -= OnServerManagerWebSocketConnected;
StopKeepAlive();
}