diff --git a/websocket-sharp/Ext.cs b/websocket-sharp/Ext.cs index f73135ef..95737fe0 100644 --- a/websocket-sharp/Ext.cs +++ b/websocket-sharp/Ext.cs @@ -201,6 +201,16 @@ namespace WebSocketSharp } } + internal static string CheckIfAvailable ( + this ServerState state, bool ready, bool start, bool shutting) + { + return (!ready && (state == ServerState.Ready || state == ServerState.Stop)) || + (!start && state == ServerState.Start) || + (!shutting && state == ServerState.ShuttingDown) + ? "This operation isn't available in: " + state + : null; + } + internal static string CheckIfCanAccept (this WebSocketState state) { return state != WebSocketState.Connecting @@ -238,40 +248,6 @@ namespace WebSocketSharp : null; } - internal static string CheckIfCanStart (this ServerState state) - { - return state == ServerState.Start || state == ServerState.ShuttingDown - ? "This operation has already been done." - : null; - } - - internal static string CheckIfCanStop (this ServerState state) - { - return state != ServerState.Start - ? String.Format ("This operation isn't available ({0}).", state) - : null; - } - - internal static string CheckIfStart (this ServerState state) - { - return state == ServerState.Ready - ? "The server hasn't yet started." - : state == ServerState.ShuttingDown - ? "The server is shutting down." - : state == ServerState.Stop - ? "The server has already stopped." - : null; - } - - internal static string CheckIfStartable (this ServerState state) - { - return state == ServerState.Start - ? "The server has already started." - : state == ServerState.ShuttingDown - ? "The server is shutting down." - : null; - } - internal static string CheckIfValidProtocols (this string[] protocols) { return protocols.Contains ( diff --git a/websocket-sharp/Server/HttpServer.cs b/websocket-sharp/Server/HttpServer.cs index 01e3c3c7..d4ec6ad9 100644 --- a/websocket-sharp/Server/HttpServer.cs +++ b/websocket-sharp/Server/HttpServer.cs @@ -298,7 +298,7 @@ namespace WebSocketSharp.Server } set { - var msg = _state.CheckIfStartable (); + var msg = _state.CheckIfAvailable (true, false, false); if (msg != null) { _logger.Error (msg); return; @@ -346,7 +346,7 @@ namespace WebSocketSharp.Server } set { - var msg = _state.CheckIfStartable (); + var msg = _state.CheckIfAvailable (true, false, false); if (msg != null) { _logger.Error (msg); return; @@ -398,7 +398,7 @@ namespace WebSocketSharp.Server } set { - var msg = _state.CheckIfStartable (); + var msg = _state.CheckIfAvailable (true, false, false); if (msg != null) { _logger.Error (msg); return; @@ -426,7 +426,7 @@ namespace WebSocketSharp.Server } set { - var msg = _state.CheckIfStartable (); + var msg = _state.CheckIfAvailable (true, false, false); if (msg != null) { _logger.Error (msg); return; @@ -449,7 +449,7 @@ namespace WebSocketSharp.Server } set { - var msg = _state.CheckIfStartable (); + var msg = _state.CheckIfAvailable (true, false, false); if (msg != null) { _logger.Error (msg); return; @@ -473,7 +473,7 @@ namespace WebSocketSharp.Server } set { - var msg = _state.CheckIfStartable (); + var msg = _state.CheckIfAvailable (true, false, false); if (msg != null) { _logger.Error (msg); return; @@ -498,7 +498,7 @@ namespace WebSocketSharp.Server } set { - var msg = _state.CheckIfStartable (); + var msg = _state.CheckIfAvailable (true, false, false); if (msg != null) { _logger.Error (msg); return; @@ -521,7 +521,7 @@ namespace WebSocketSharp.Server } set { - var msg = _state.CheckIfStartable () ?? value.CheckIfValidWaitTime (); + var msg = _state.CheckIfAvailable (true, false, false) ?? value.CheckIfValidWaitTime (); if (msg != null) { _logger.Error (msg); return; @@ -892,7 +892,7 @@ namespace WebSocketSharp.Server public void Start () { lock (_sync) { - var msg = _state.CheckIfCanStart () ?? checkIfCertificateExists (); + var msg = _state.CheckIfAvailable (true, false, false) ?? checkIfCertificateExists (); if (msg != null) { _logger.Error (msg); return; @@ -911,7 +911,7 @@ namespace WebSocketSharp.Server public void Stop () { lock (_sync) { - var msg = _state.CheckIfCanStop (); + var msg = _state.CheckIfAvailable (false, true, false); if (msg != null) { _logger.Error (msg); return; @@ -939,7 +939,9 @@ namespace WebSocketSharp.Server public void Stop (ushort code, string reason) { lock (_sync) { - var msg = _state.CheckIfCanStop () ?? WebSocket.CheckCloseParameters (code, reason, false); + var msg = _state.CheckIfAvailable (false, true, false) ?? + WebSocket.CheckCloseParameters (code, reason, false); + if (msg != null) { _logger.Error (msg); return; @@ -975,7 +977,9 @@ namespace WebSocketSharp.Server public void Stop (CloseStatusCode code, string reason) { lock (_sync) { - var msg = _state.CheckIfCanStop () ?? WebSocket.CheckCloseParameters (code, reason, false); + var msg = _state.CheckIfAvailable (false, true, false) ?? + WebSocket.CheckCloseParameters (code, reason, false); + if (msg != null) { _logger.Error (msg); return; diff --git a/websocket-sharp/Server/WebSocketServer.cs b/websocket-sharp/Server/WebSocketServer.cs index cd9833ec..457df8c6 100644 --- a/websocket-sharp/Server/WebSocketServer.cs +++ b/websocket-sharp/Server/WebSocketServer.cs @@ -303,7 +303,7 @@ namespace WebSocketSharp.Server } set { - var msg = _state.CheckIfStartable (); + var msg = _state.CheckIfAvailable (true, false, false); if (msg != null) { _logger.Error (msg); return; @@ -351,7 +351,7 @@ namespace WebSocketSharp.Server } set { - var msg = _state.CheckIfStartable (); + var msg = _state.CheckIfAvailable (true, false, false); if (msg != null) { _logger.Error (msg); return; @@ -403,7 +403,7 @@ namespace WebSocketSharp.Server } set { - var msg = _state.CheckIfStartable (); + var msg = _state.CheckIfAvailable (true, false, false); if (msg != null) { _logger.Error (msg); return; @@ -431,7 +431,7 @@ namespace WebSocketSharp.Server } set { - var msg = _state.CheckIfStartable (); + var msg = _state.CheckIfAvailable (true, false, false); if (msg != null) { _logger.Error (msg); return; @@ -455,7 +455,7 @@ namespace WebSocketSharp.Server } set { - var msg = _state.CheckIfStartable (); + var msg = _state.CheckIfAvailable (true, false, false); if (msg != null) { _logger.Error (msg); return; @@ -480,7 +480,7 @@ namespace WebSocketSharp.Server } set { - var msg = _state.CheckIfStartable (); + var msg = _state.CheckIfAvailable (true, false, false); if (msg != null) { _logger.Error (msg); return; @@ -503,7 +503,7 @@ namespace WebSocketSharp.Server } set { - var msg = _state.CheckIfStartable () ?? value.CheckIfValidWaitTime (); + var msg = _state.CheckIfAvailable (true, false, false) ?? value.CheckIfValidWaitTime (); if (msg != null) { _logger.Error (msg); return; @@ -795,7 +795,7 @@ namespace WebSocketSharp.Server public void Start () { lock (_sync) { - var msg = _state.CheckIfCanStart () ?? checkIfCertificateExists (); + var msg = _state.CheckIfAvailable (true, false, false) ?? checkIfCertificateExists (); if (msg != null) { _logger.Error (msg); return; @@ -814,7 +814,7 @@ namespace WebSocketSharp.Server public void Stop () { lock (_sync) { - var msg = _state.CheckIfCanStop (); + var msg = _state.CheckIfAvailable (false, true, false); if (msg != null) { _logger.Error (msg); return; @@ -842,7 +842,9 @@ namespace WebSocketSharp.Server public void Stop (ushort code, string reason) { lock (_sync) { - var msg = _state.CheckIfCanStop () ?? WebSocket.CheckCloseParameters (code, reason, false); + var msg = _state.CheckIfAvailable (false, true, false) ?? + WebSocket.CheckCloseParameters (code, reason, false); + if (msg != null) { _logger.Error (msg); return; @@ -877,7 +879,9 @@ namespace WebSocketSharp.Server public void Stop (CloseStatusCode code, string reason) { lock (_sync) { - var msg = _state.CheckIfCanStop () ?? WebSocket.CheckCloseParameters (code, reason, false); + var msg = _state.CheckIfAvailable (false, true, false) ?? + WebSocket.CheckCloseParameters (code, reason, false); + if (msg != null) { _logger.Error (msg); return; diff --git a/websocket-sharp/Server/WebSocketServiceHost.cs b/websocket-sharp/Server/WebSocketServiceHost.cs index 5d1fb378..1db348ec 100644 --- a/websocket-sharp/Server/WebSocketServiceHost.cs +++ b/websocket-sharp/Server/WebSocketServiceHost.cs @@ -187,7 +187,7 @@ namespace WebSocketSharp.Server } set { - var msg = _sessions.State.CheckIfStartable (); + var msg = _sessions.State.CheckIfAvailable (true, false, false); if (msg != null) { _logger.Error (msg); return; @@ -221,7 +221,9 @@ namespace WebSocketSharp.Server } set { - var msg = _sessions.State.CheckIfStartable () ?? value.CheckIfValidWaitTime (); + var msg = _sessions.State.CheckIfAvailable (true, false, false) ?? + value.CheckIfValidWaitTime (); + if (msg != null) { _logger.Error (msg); return; diff --git a/websocket-sharp/Server/WebSocketServiceManager.cs b/websocket-sharp/Server/WebSocketServiceManager.cs index 1ed1e6fa..2e3a218b 100644 --- a/websocket-sharp/Server/WebSocketServiceManager.cs +++ b/websocket-sharp/Server/WebSocketServiceManager.cs @@ -385,7 +385,7 @@ namespace WebSocketSharp.Server /// public void Broadcast (byte[] data) { - var msg = _state.CheckIfStart () ?? data.CheckIfValidSendData (); + var msg = _state.CheckIfAvailable (false, true, false) ?? data.CheckIfValidSendData (); if (msg != null) { _logger.Error (msg); return; @@ -405,7 +405,7 @@ namespace WebSocketSharp.Server /// public void Broadcast (string data) { - var msg = _state.CheckIfStart () ?? data.CheckIfValidSendData (); + var msg = _state.CheckIfAvailable (false, true, false) ?? data.CheckIfValidSendData (); if (msg != null) { _logger.Error (msg); return; @@ -434,7 +434,7 @@ namespace WebSocketSharp.Server /// public void BroadcastAsync (byte[] data, Action completed) { - var msg = _state.CheckIfStart () ?? data.CheckIfValidSendData (); + var msg = _state.CheckIfAvailable (false, true, false) ?? data.CheckIfValidSendData (); if (msg != null) { _logger.Error (msg); return; @@ -462,7 +462,7 @@ namespace WebSocketSharp.Server /// public void BroadcastAsync (string data, Action completed) { - var msg = _state.CheckIfStart () ?? data.CheckIfValidSendData (); + var msg = _state.CheckIfAvailable (false, true, false) ?? data.CheckIfValidSendData (); if (msg != null) { _logger.Error (msg); return; @@ -494,7 +494,7 @@ namespace WebSocketSharp.Server /// public void BroadcastAsync (Stream stream, int length, Action completed) { - var msg = _state.CheckIfStart () ?? + var msg = _state.CheckIfAvailable (false, true, false) ?? stream.CheckIfCanRead () ?? (length < 1 ? "'length' is less than 1." : null); @@ -538,7 +538,7 @@ namespace WebSocketSharp.Server /// public Dictionary> Broadping () { - var msg = _state.CheckIfStart (); + var msg = _state.CheckIfAvailable (false, true, false); if (msg != null) { _logger.Error (msg); return null; @@ -567,7 +567,9 @@ namespace WebSocketSharp.Server return Broadping (); byte[] data = null; - var msg = _state.CheckIfStart () ?? WebSocket.CheckPingParameter (message, out data); + var msg = _state.CheckIfAvailable (false, true, false) ?? + WebSocket.CheckPingParameter (message, out data); + if (msg != null) { _logger.Error (msg); return null; @@ -592,7 +594,7 @@ namespace WebSocketSharp.Server /// public bool TryGetServiceHost (string path, out WebSocketServiceHost host) { - var msg = _state.CheckIfStart () ?? path.CheckIfValidServicePath (); + var msg = _state.CheckIfAvailable (false, true, false) ?? path.CheckIfValidServicePath (); if (msg != null) { _logger.Error (msg); host = null; diff --git a/websocket-sharp/Server/WebSocketSessionManager.cs b/websocket-sharp/Server/WebSocketSessionManager.cs index 051aa023..ddd0ca6f 100644 --- a/websocket-sharp/Server/WebSocketSessionManager.cs +++ b/websocket-sharp/Server/WebSocketSessionManager.cs @@ -393,7 +393,7 @@ namespace WebSocketSharp.Server /// public void Broadcast (byte[] data) { - var msg = _state.CheckIfStart () ?? data.CheckIfValidSendData (); + var msg = _state.CheckIfAvailable (false, true, false) ?? data.CheckIfValidSendData (); if (msg != null) { _logger.Error (msg); return; @@ -413,7 +413,7 @@ namespace WebSocketSharp.Server /// public void Broadcast (string data) { - var msg = _state.CheckIfStart () ?? data.CheckIfValidSendData (); + var msg = _state.CheckIfAvailable (false, true, false) ?? data.CheckIfValidSendData (); if (msg != null) { _logger.Error (msg); return; @@ -442,7 +442,7 @@ namespace WebSocketSharp.Server /// public void BroadcastAsync (byte[] data, Action completed) { - var msg = _state.CheckIfStart () ?? data.CheckIfValidSendData (); + var msg = _state.CheckIfAvailable (false, true, false) ?? data.CheckIfValidSendData (); if (msg != null) { _logger.Error (msg); return; @@ -470,7 +470,7 @@ namespace WebSocketSharp.Server /// public void BroadcastAsync (string data, Action completed) { - var msg = _state.CheckIfStart () ?? data.CheckIfValidSendData (); + var msg = _state.CheckIfAvailable (false, true, false) ?? data.CheckIfValidSendData (); if (msg != null) { _logger.Error (msg); return; @@ -502,7 +502,7 @@ namespace WebSocketSharp.Server /// public void BroadcastAsync (Stream stream, int length, Action completed) { - var msg = _state.CheckIfStart () ?? + var msg = _state.CheckIfAvailable (false, true, false) ?? stream.CheckIfCanRead () ?? (length < 1 ? "'length' is less than 1." : null); @@ -545,7 +545,7 @@ namespace WebSocketSharp.Server /// public Dictionary Broadping () { - var msg = _state.CheckIfStart (); + var msg = _state.CheckIfAvailable (false, true, false); if (msg != null) { _logger.Error (msg); return null; @@ -572,7 +572,9 @@ namespace WebSocketSharp.Server return Broadping (); byte[] data = null; - var msg = _state.CheckIfStart () ?? WebSocket.CheckPingParameter (message, out data); + var msg = _state.CheckIfAvailable (false, true, false) ?? + WebSocket.CheckPingParameter (message, out data); + if (msg != null) { _logger.Error (msg); return null; @@ -831,7 +833,7 @@ namespace WebSocketSharp.Server /// public bool TryGetSession (string id, out IWebSocketSession session) { - var msg = _state.CheckIfStart () ?? id.CheckIfValidSessionID (); + var msg = _state.CheckIfAvailable (false, true, false) ?? id.CheckIfValidSessionID (); if (msg != null) { _logger.Error (msg); session = null;