diff options
| author | Christopher Young <c.t.ythegamer@gmail.com> | 2025-10-08 12:27:51 -0600 |
|---|---|---|
| committer | Christopher Young <c.t.ythegamer@gmail.com> | 2025-10-08 12:27:51 -0600 |
| commit | 622b60064dd2c9bf6cea139ab2056011d9e9c203 (patch) | |
| tree | ec9f84d01b7c3ff3ffd23e89bb27aa4bf4e131ff /MediaBrowser.Controller/Net | |
| parent | 91b2b7fc3dfe23fdc01834f2f1364e9f8bd98fe4 (diff) | |
| parent | 0b4854c5eff7c862d05f43048e08dd3a1a25efaa (diff) | |
Merge branch 'master' of https://github.com/JadedRain/jellyfin
Diffstat (limited to 'MediaBrowser.Controller/Net')
| -rw-r--r-- | MediaBrowser.Controller/Net/BasePeriodicWebSocketListener.cs | 27 |
1 files changed, 19 insertions, 8 deletions
diff --git a/MediaBrowser.Controller/Net/BasePeriodicWebSocketListener.cs b/MediaBrowser.Controller/Net/BasePeriodicWebSocketListener.cs index 4757bfa303..1e0d77fe51 100644 --- a/MediaBrowser.Controller/Net/BasePeriodicWebSocketListener.cs +++ b/MediaBrowser.Controller/Net/BasePeriodicWebSocketListener.cs @@ -81,6 +81,16 @@ namespace MediaBrowser.Controller.Net protected abstract Task<TReturnDataType> GetDataToSend(); /// <summary> + /// Gets the data to send for a specific connection. + /// </summary> + /// <param name="connection">The connection.</param> + /// <returns>Task{`1}.</returns> + protected virtual Task<TReturnDataType> GetDataToSendForConnection(IWebSocketConnection connection) + { + return GetDataToSend(); + } + + /// <summary> /// Processes the message. /// </summary> /// <param name="message">The message.</param> @@ -174,17 +184,11 @@ namespace MediaBrowser.Controller.Net continue; } - var data = await GetDataToSend().ConfigureAwait(false); - if (data is null) - { - continue; - } - IEnumerable<Task> GetTasks() { foreach (var tuple in tuples) { - yield return SendDataInternal(data, tuple); + yield return SendDataForConnectionAsync(tuple); } } @@ -198,12 +202,19 @@ namespace MediaBrowser.Controller.Net } } - private async Task SendDataInternal(TReturnDataType data, (IWebSocketConnection Connection, CancellationTokenSource CancellationTokenSource, TStateType State) tuple) + private async Task SendDataForConnectionAsync((IWebSocketConnection Connection, CancellationTokenSource CancellationTokenSource, TStateType State) tuple) { try { var (connection, cts, state) = tuple; var cancellationToken = cts.Token; + + var data = await GetDataToSendForConnection(connection).ConfigureAwait(false); + if (data is null) + { + return; + } + await connection.SendAsync( new OutboundWebSocketMessage<TReturnDataType> { MessageType = Type, Data = data }, cancellationToken).ConfigureAwait(false); |
