From a07928db9614cd7e38e54046d0f6eff897339afb Mon Sep 17 00:00:00 2001 From: sta Date: Thu, 15 Dec 2016 16:46:00 +0900 Subject: [PATCH] [Modify] Add it --- websocket-sharp/WebSocket.cs | 42 ++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) diff --git a/websocket-sharp/WebSocket.cs b/websocket-sharp/WebSocket.cs index aa278c5f..c98eff3f 100644 --- a/websocket-sharp/WebSocket.cs +++ b/websocket-sharp/WebSocket.cs @@ -1013,6 +1013,48 @@ namespace WebSocketSharp } } + private void close ( + PayloadData payloadData, bool send, bool receive, bool received + ) + { + lock (_forState) { + if (_readyState == WebSocketState.Closing) { + _logger.Info ("The closing is already in progress."); + return; + } + + if (_readyState == WebSocketState.Closed) { + _logger.Info ("The connection has already been closed."); + return; + } + + send = send && _readyState == WebSocketState.Open; + receive = send && receive; + + _readyState = WebSocketState.Closing; + } + + _logger.Trace ("Begin closing the connection."); + + var res = closeHandshake (payloadData, send, receive, received); + releaseResources (); + + _logger.Trace ("End closing the connection."); + + _readyState = WebSocketState.Closed; + + var e = new CloseEventArgs (payloadData); + e.WasClean = res; + + try { + OnClose.Emit (this, e); + } + catch (Exception ex) { + _logger.Error (ex.ToString ()); + error ("An error has occurred during the OnClose event.", ex); + } + } + private void closeAsync (ushort code, string reason) { if (_readyState == WebSocketState.Closing) {