From 88a1bbb9f6ab79c97a36e9e4cd57b9d1030cbfe5 Mon Sep 17 00:00:00 2001 From: sta Date: Sun, 18 Jan 2015 17:27:23 +0900 Subject: [PATCH] Added the close2 (CloseEventArgs, bool, bool) method, to replace the close (CloseEventArgs, bool, bool) method with this --- websocket-sharp/WebSocket.cs | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/websocket-sharp/WebSocket.cs b/websocket-sharp/WebSocket.cs index b5860ad2..df7ba943 100644 --- a/websocket-sharp/WebSocket.cs +++ b/websocket-sharp/WebSocket.cs @@ -678,6 +678,39 @@ namespace WebSocketSharp } } + private void close2 (CloseEventArgs e, bool send, bool wait) + { + lock (_forConn) { + if (_readyState == WebSocketState.Closing || _readyState == WebSocketState.Closed) { + _logger.Info ("Closing the connection has already been done."); + return; + } + + send = send && _readyState == WebSocketState.Open; + wait = wait && send; + + _readyState = WebSocketState.Closing; + } + + _logger.Trace ("Start closing the connection."); + + e.WasClean = closeHandshake ( + send ? WebSocketFrame.CreateCloseFrame (e.PayloadData, _client).ToByteArray () : null, + wait ? _waitTime : TimeSpan.Zero, + _client ? (Action) releaseClientResources : releaseServerResources); + + _logger.Trace ("End closing the connection."); + + _readyState = WebSocketState.Closed; + try { + OnClose.Emit (this, e); + } + catch (Exception ex) { + _logger.Fatal (ex.ToString ()); + error ("An exception has occurred during an OnClose event.", ex); + } + } + private void closeAsync (CloseEventArgs e, bool send, bool wait) { Action closer = close;