From 963db4bdf0204ca0d6871896176c95162b028f33 Mon Sep 17 00:00:00 2001 From: sta Date: Wed, 31 May 2017 15:24:48 +0900 Subject: [PATCH] [Modify] Add it --- websocket-sharp/Server/HttpServer.cs | 55 ++++++++++++++++++++++++++++ 1 file changed, 55 insertions(+) diff --git a/websocket-sharp/Server/HttpServer.cs b/websocket-sharp/Server/HttpServer.cs index fb8ebdd4..9309e173 100644 --- a/websocket-sharp/Server/HttpServer.cs +++ b/websocket-sharp/Server/HttpServer.cs @@ -775,6 +775,61 @@ namespace WebSocketSharp.Server _receiveThread.Start (); } + private void stop (ushort code, string reason) + { + if (_state == ServerState.Ready) { + _log.Info ("The server is not started."); + return; + } + + if (_state == ServerState.ShuttingDown) { + _log.Info ("The server is shutting down."); + return; + } + + if (_state == ServerState.Stop) { + _log.Info ("The server has already stopped."); + return; + } + + lock (_sync) { + if (_state == ServerState.ShuttingDown) { + _log.Info ("The server is shutting down."); + return; + } + + if (_state == ServerState.Stop) { + _log.Info ("The server has already stopped."); + return; + } + + _state = ServerState.ShuttingDown; + } + + try { + var threw = false; + try { + _services.Stop (code, reason); + } + catch { + threw = true; + throw; + } + finally { + try { + stopReceiving (5000); + } + catch { + if (!threw) + throw; + } + } + } + finally { + _state = ServerState.Stop; + } + } + private void stopReceiving (int millisecondsTimeout) { _listener.Close ();