From c00ffc8f7e401715393708cb4c1538684b47c75a Mon Sep 17 00:00:00 2001 From: sta Date: Wed, 22 Nov 2017 15:20:46 +0900 Subject: [PATCH] [Modify] Throw exception --- websocket-sharp/WebSocket.cs | 76 ++++++++++++++++++++++++++++-------- 1 file changed, 59 insertions(+), 17 deletions(-) diff --git a/websocket-sharp/WebSocket.cs b/websocket-sharp/WebSocket.cs index b8a3f666..e9056b00 100644 --- a/websocket-sharp/WebSocket.cs +++ b/websocket-sharp/WebSocket.cs @@ -800,11 +800,37 @@ namespace WebSocketSharp // As server private bool accept () { + if (_readyState == WebSocketState.Open) { + var msg = "The handshake request has already been accepted."; + _logger.Warn (msg); + + return false; + } + lock (_forState) { - string msg; - if (!checkIfAvailable (true, false, false, false, out msg)) { + if (_readyState == WebSocketState.Open) { + var msg = "The handshake request has already been accepted."; + _logger.Warn (msg); + + return false; + } + + if (_readyState == WebSocketState.Closing) { + var msg = "The close process has set in."; _logger.Error (msg); - error ("An error has occurred in accepting.", null); + + msg = "An interruption has occurred while attempting to accept."; + error (msg, null); + + return false; + } + + if (_readyState == WebSocketState.Closed) { + var msg = "The connection has been closed."; + _logger.Error (msg); + + msg = "An interruption has occurred while attempting to accept."; + error (msg, null); return false; } @@ -812,16 +838,18 @@ namespace WebSocketSharp try { if (!acceptHandshake ()) return false; - - _readyState = WebSocketState.Open; } catch (Exception ex) { - _logger.Fatal (ex.ToString ()); - fatal ("An exception has occurred while accepting.", ex); + _logger.Fatal (ex.Message); + _logger.Debug (ex.ToString ()); + + var msg = "An exception has occurred while attempting to accept."; + fatal (msg, ex); return false; } + _readyState = WebSocketState.Open; return true; } } @@ -2436,12 +2464,19 @@ namespace WebSocketSharp /// public void Accept () { - string msg; - if (!checkIfAvailable (false, true, true, false, false, false, out msg)) { - _logger.Error (msg); - error ("An error has occurred in accepting.", null); + if (_client) { + var msg = "This instance is a client."; + throw new InvalidOperationException (msg); + } - return; + if (_readyState == WebSocketState.Closing) { + var msg = "The close process is in progress."; + throw new InvalidOperationException (msg); + } + + if (_readyState == WebSocketState.Closed) { + var msg = "The connection has already been closed."; + throw new InvalidOperationException (msg); } if (accept ()) @@ -2461,12 +2496,19 @@ namespace WebSocketSharp /// public void AcceptAsync () { - string msg; - if (!checkIfAvailable (false, true, true, false, false, false, out msg)) { - _logger.Error (msg); - error ("An error has occurred in accepting.", null); + if (_client) { + var msg = "This instance is a client."; + throw new InvalidOperationException (msg); + } - return; + if (_readyState == WebSocketState.Closing) { + var msg = "The close process is in progress."; + throw new InvalidOperationException (msg); + } + + if (_readyState == WebSocketState.Closed) { + var msg = "The connection has already been closed."; + throw new InvalidOperationException (msg); } Func acceptor = accept;