diff options
| author | Bond-009 <bond.009@outlook.com> | 2019-02-16 17:05:05 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2019-02-16 17:05:05 +0100 |
| commit | 64a4f259a20408fe0a3c954d71d2b975d48c3d3e (patch) | |
| tree | b991ccbee7ac7a6250e4db60252557991724b3ad /Jellyfin.Server/SocketSharp/SharpWebSocket.cs | |
| parent | 3a5bbcf2a879dc78eda969e3e91c02f79e60bf0e (diff) | |
| parent | 25c2267a89af5c2e82774c638cdad0defcc894b5 (diff) | |
Merge branch 'master' into async
Diffstat (limited to 'Jellyfin.Server/SocketSharp/SharpWebSocket.cs')
| -rw-r--r-- | Jellyfin.Server/SocketSharp/SharpWebSocket.cs | 44 |
1 files changed, 20 insertions, 24 deletions
diff --git a/Jellyfin.Server/SocketSharp/SharpWebSocket.cs b/Jellyfin.Server/SocketSharp/SharpWebSocket.cs index 87887374a..9b0951857 100644 --- a/Jellyfin.Server/SocketSharp/SharpWebSocket.cs +++ b/Jellyfin.Server/SocketSharp/SharpWebSocket.cs @@ -24,6 +24,7 @@ namespace Jellyfin.Server.SocketSharp private TaskCompletionSource<bool> _taskCompletionSource = new TaskCompletionSource<bool>(); private readonly CancellationTokenSource _cancellationTokenSource = new CancellationTokenSource(); + private bool _disposed = false; public SharpWebSocket(SocketHttpListener.WebSocket socket, ILogger logger) { @@ -40,9 +41,9 @@ namespace Jellyfin.Server.SocketSharp _logger = logger; WebSocket = socket; - socket.OnMessage += socket_OnMessage; - socket.OnClose += socket_OnClose; - socket.OnError += socket_OnError; + socket.OnMessage += OnSocketMessage; + socket.OnClose += OnSocketClose; + socket.OnError += OnSocketError; } public Task ConnectAsServerAsync() @@ -53,29 +54,22 @@ namespace Jellyfin.Server.SocketSharp return _taskCompletionSource.Task; } - void socket_OnError(object sender, SocketHttpListener.ErrorEventArgs e) + private void OnSocketError(object sender, SocketHttpListener.ErrorEventArgs e) { _logger.LogError("Error in SharpWebSocket: {Message}", e.Message ?? string.Empty); - //Closed?.Invoke(this, EventArgs.Empty); + + // Closed?.Invoke(this, EventArgs.Empty); } - void socket_OnClose(object sender, SocketHttpListener.CloseEventArgs e) + private void OnSocketClose(object sender, SocketHttpListener.CloseEventArgs e) { _taskCompletionSource.TrySetResult(true); Closed?.Invoke(this, EventArgs.Empty); } - void socket_OnMessage(object sender, SocketHttpListener.MessageEventArgs e) + private void OnSocketMessage(object sender, SocketHttpListener.MessageEventArgs e) { - //if (!string.IsNullOrEmpty(e.Data)) - //{ - // if (OnReceive != null) - // { - // OnReceive(e.Data); - // } - // return; - //} if (OnReceiveBytes != null) { OnReceiveBytes(e.RawData); @@ -118,6 +112,7 @@ namespace Jellyfin.Server.SocketSharp public void Dispose() { Dispose(true); + GC.SuppressFinalize(this); } /// <summary> @@ -126,16 +121,23 @@ namespace Jellyfin.Server.SocketSharp /// <param name="dispose"><c>true</c> to release both managed and unmanaged resources; <c>false</c> to release only unmanaged resources.</param> protected virtual void Dispose(bool dispose) { + if (_disposed) + { + return; + } + if (dispose) { - WebSocket.OnMessage -= socket_OnMessage; - WebSocket.OnClose -= socket_OnClose; - WebSocket.OnError -= socket_OnError; + WebSocket.OnMessage -= OnSocketMessage; + WebSocket.OnClose -= OnSocketClose; + WebSocket.OnError -= OnSocketError; _cancellationTokenSource.Cancel(); WebSocket.CloseAsync().GetAwaiter().GetResult(); } + + _disposed = true; } /// <summary> @@ -143,11 +145,5 @@ namespace Jellyfin.Server.SocketSharp /// </summary> /// <value>The receive action.</value> public Action<byte[]> OnReceiveBytes { get; set; } - - /// <summary> - /// Gets or sets the on receive. - /// </summary> - /// <value>The on receive.</value> - public Action<string> OnReceive { get; set; } } } |
