Refactored CloseEventArgs.cs

This commit is contained in:
sta
2014-09-21 17:33:07 +09:00
parent 25c103d51e
commit 56acccdda1
6 changed files with 178 additions and 98 deletions

View File

@@ -424,10 +424,9 @@ namespace WebSocketSharp.Server
_state = ServerState.ShuttingDown;
}
_services.Stop (
((ushort) CloseStatusCode.ServerError).InternalToByteArray (ByteOrder.Big), true);
_services.Stop (new CloseEventArgs (CloseStatusCode.ServerError), true);
_listener.Abort ();
_state = ServerState.Stop;
}
@@ -611,7 +610,7 @@ namespace WebSocketSharp.Server
(initializer == null ? "'initializer' is null." : null);
if (msg != null) {
_logger.Error (String.Format ("{0}\nservice path: {1}", msg, path));
_logger.Error (msg);
return;
}
@@ -656,7 +655,7 @@ namespace WebSocketSharp.Server
{
var msg = path.CheckIfValidServicePath ();
if (msg != null) {
_logger.Error (String.Format ("{0}\nservice path: {1}", msg, path));
_logger.Error (msg);
return false;
}
@@ -671,7 +670,7 @@ namespace WebSocketSharp.Server
lock (_sync) {
var msg = _state.CheckIfStartable () ?? checkIfCertificateExists ();
if (msg != null) {
_logger.Error (String.Format ("{0}\nstate: {1}\nsecure: {2}", msg, _state, _secure));
_logger.Error (msg);
return;
}
@@ -690,14 +689,14 @@ namespace WebSocketSharp.Server
lock (_sync) {
var msg = _state.CheckIfStart ();
if (msg != null) {
_logger.Error (String.Format ("{0}\nstate: {1}", msg, _state));
_logger.Error (msg);
return;
}
_state = ServerState.ShuttingDown;
}
_services.Stop (new byte[0], true);
_services.Stop (new CloseEventArgs (), true);
stopReceiving (5000);
_state = ServerState.Stop;
@@ -715,23 +714,22 @@ namespace WebSocketSharp.Server
/// </param>
public void Stop (ushort code, string reason)
{
byte[] data = null;
CloseEventArgs e = null;
lock (_sync) {
var msg = _state.CheckIfStart () ??
code.CheckIfValidCloseStatusCode () ??
(data = code.Append (reason)).CheckIfValidControlData ("reason");
var msg =
_state.CheckIfStart () ??
code.CheckIfValidCloseStatusCode () ??
(e = new CloseEventArgs (code, reason)).RawData.CheckIfValidControlData ("reason");
if (msg != null) {
_logger.Error (
String.Format ("{0}\nstate: {1}\ncode: {2}\nreason: {3}", msg, _state, code, reason));
_logger.Error (msg);
return;
}
_state = ServerState.ShuttingDown;
}
_services.Stop (data, !code.IsReserved ());
_services.Stop (e, !code.IsReserved ());
stopReceiving (5000);
_state = ServerState.Stop;
@@ -750,20 +748,21 @@ namespace WebSocketSharp.Server
/// </param>
public void Stop (CloseStatusCode code, string reason)
{
byte[] data = null;
CloseEventArgs e = null;
lock (_sync) {
var msg = _state.CheckIfStart () ??
(data = ((ushort) code).Append (reason)).CheckIfValidControlData ("reason");
var msg =
_state.CheckIfStart () ??
(e = new CloseEventArgs (code, reason)).RawData.CheckIfValidControlData ("reason");
if (msg != null) {
_logger.Error (String.Format ("{0}\nstate: {1}\nreason: {2}", msg, _state, reason));
_logger.Error (msg);
return;
}
_state = ServerState.ShuttingDown;
}
_services.Stop (data, !code.IsReserved ());
_services.Stop (e, !code.IsReserved ());
stopReceiving (5000);
_state = ServerState.Stop;

View File

@@ -507,8 +507,7 @@ namespace WebSocketSharp.Server
}
_listener.Stop ();
_services.Stop (
((ushort) CloseStatusCode.ServerError).InternalToByteArray (ByteOrder.Big), true);
_services.Stop (new CloseEventArgs (CloseStatusCode.ServerError), true);
_state = ServerState.Stop;
}
@@ -728,7 +727,7 @@ namespace WebSocketSharp.Server
(initializer == null ? "'initializer' is null." : null);
if (msg != null) {
_logger.Error (String.Format ("{0}\nservice path: {1}", msg, path));
_logger.Error (msg);
return;
}
@@ -752,7 +751,7 @@ namespace WebSocketSharp.Server
{
var msg = path.CheckIfValidServicePath ();
if (msg != null) {
_logger.Error (String.Format ("{0}\nservice path: {1}", msg, path));
_logger.Error (msg);
return false;
}
@@ -767,7 +766,7 @@ namespace WebSocketSharp.Server
lock (_sync) {
var msg = _state.CheckIfStartable () ?? checkIfCertificateExists ();
if (msg != null) {
_logger.Error (String.Format ("{0}\nstate: {1}\nsecure: {2}", msg, _state, _secure));
_logger.Error (msg);
return;
}
@@ -786,7 +785,7 @@ namespace WebSocketSharp.Server
lock (_sync) {
var msg = _state.CheckIfStart ();
if (msg != null) {
_logger.Error (String.Format ("{0}\nstate: {1}", msg, _state));
_logger.Error (msg);
return;
}
@@ -794,7 +793,7 @@ namespace WebSocketSharp.Server
}
stopReceiving (5000);
_services.Stop (new byte[0], true);
_services.Stop (new CloseEventArgs (), true);
_state = ServerState.Stop;
}
@@ -811,16 +810,15 @@ namespace WebSocketSharp.Server
/// </param>
public void Stop (ushort code, string reason)
{
byte[] data = null;
CloseEventArgs e = null;
lock (_sync) {
var msg = _state.CheckIfStart () ??
code.CheckIfValidCloseStatusCode () ??
(data = code.Append (reason)).CheckIfValidControlData ("reason");
var msg =
_state.CheckIfStart () ??
code.CheckIfValidCloseStatusCode () ??
(e = new CloseEventArgs (code, reason)).RawData.CheckIfValidControlData ("reason");
if (msg != null) {
_logger.Error (
String.Format ("{0}\nstate: {1}\ncode: {2}\nreason: {3}", msg, _state, code, reason));
_logger.Error (msg);
return;
}
@@ -828,7 +826,7 @@ namespace WebSocketSharp.Server
}
stopReceiving (5000);
_services.Stop (data, !code.IsReserved ());
_services.Stop (e, !code.IsReserved ());
_state = ServerState.Stop;
}
@@ -846,13 +844,14 @@ namespace WebSocketSharp.Server
/// </param>
public void Stop (CloseStatusCode code, string reason)
{
byte[] data = null;
CloseEventArgs e = null;
lock (_sync) {
var msg = _state.CheckIfStart () ??
(data = ((ushort) code).Append (reason)).CheckIfValidControlData ("reason");
var msg =
_state.CheckIfStart () ??
(e = new CloseEventArgs (code, reason)).RawData.CheckIfValidControlData ("reason");
if (msg != null) {
_logger.Error (String.Format ("{0}\nstate: {1}\nreason: {2}", msg, _state, reason));
_logger.Error (msg);
return;
}
@@ -860,7 +859,7 @@ namespace WebSocketSharp.Server
}
stopReceiving (5000);
_services.Stop (data, !code.IsReserved ());
_services.Stop (e, !code.IsReserved ());
_state = ServerState.Stop;
}

View File

@@ -121,10 +121,9 @@ namespace WebSocketSharp.Server
internal void Stop (ushort code, string reason)
{
var payload = new PayloadData (code.Append (reason));
var e = new CloseEventArgs (payload);
var e = new CloseEventArgs (code, reason);
var bytes = !code.IsReserved ()
? WebSocketFrame.CreateCloseFrame (Mask.Unmask, payload).ToByteArray ()
? WebSocketFrame.CreateCloseFrame (Mask.Unmask, e.PayloadData).ToByteArray ()
: null;
Sessions.Stop (e, bytes);

View File

@@ -325,15 +325,12 @@ namespace WebSocketSharp.Server
}
}
internal void Stop (byte[] data, bool send)
internal void Stop (CloseEventArgs e, bool send)
{
lock (_sync) {
_state = ServerState.ShuttingDown;
var payload = new PayloadData (data);
var e = new CloseEventArgs (payload);
var bytes = send
? WebSocketFrame.CreateCloseFrame (Mask.Unmask, payload).ToByteArray ()
? WebSocketFrame.CreateCloseFrame (Mask.Unmask, e.PayloadData).ToByteArray ()
: null;
foreach (var host in _hosts.Values)