Refactored WebSocket.cs

This commit is contained in:
sta 2014-07-23 14:14:04 +09:00
parent 45e4debdbf
commit f1162dd2fd

View File

@ -90,7 +90,7 @@ namespace WebSocketSharp
private string _origin; private string _origin;
private bool _preAuth; private bool _preAuth;
private string _protocol; private string _protocol;
private string[] _protocols; private string[] _protocols;
private NetworkCredential _proxyCredentials; private NetworkCredential _proxyCredentials;
private Uri _proxyUri; private Uri _proxyUri;
private volatile WebSocketState _readyState; private volatile WebSocketState _readyState;
@ -746,13 +746,13 @@ namespace WebSocketSharp
// As client // As client
private string createExtensions () private string createExtensions ()
{ {
var res = new StringBuilder (32); var buff = new StringBuilder (32);
if (_compression != CompressionMethod.None) if (_compression != CompressionMethod.None)
res.Append (_compression.ToExtensionString ()); buff.Append (_compression.ToExtensionString ());
return res.Length > 0 return buff.Length > 0
? res.ToString () ? buff.ToString ()
: null; : null;
} }
@ -1066,7 +1066,7 @@ namespace WebSocketSharp
compressed = true; compressed = true;
} }
sent = send (opcode, stream, _client ? Mask.Mask : Mask.Unmask, compressed); sent = send (opcode, _client ? Mask.Mask : Mask.Unmask, stream, compressed);
if (!sent) if (!sent)
error ("Sending a data has been interrupted."); error ("Sending a data has been interrupted.");
} }
@ -1085,7 +1085,7 @@ namespace WebSocketSharp
} }
} }
private bool send (Opcode opcode, Stream stream, Mask mask, bool compressed) private bool send (Opcode opcode, Mask mask, Stream stream, bool compressed)
{ {
var len = stream.Length; var len = stream.Length;
@ -1123,11 +1123,12 @@ namespace WebSocketSharp
return false; return false;
// End // End
var endLen = FragmentLength; if (rem == 0)
if (rem != 0) rem = FragmentLength;
buff = new byte[endLen = rem]; else
buff = new byte[rem];
return stream.Read (buff, 0, endLen) == endLen && return stream.Read (buff, 0, rem) == rem &&
send (Fin.Final, Opcode.Cont, mask, buff, compressed); send (Fin.Final, Opcode.Cont, mask, buff, compressed);
} }
@ -1459,7 +1460,7 @@ namespace WebSocketSharp
} }
if (_readyState != WebSocketState.Open || if (_readyState != WebSocketState.Open ||
!send (opcode, cached, Mask.Unmask, _compression != CompressionMethod.None)) !send (opcode, Mask.Unmask, cached, _compression != CompressionMethod.None))
_logger.Error ("Sending a data has been interrupted."); _logger.Error ("Sending a data has been interrupted.");
} }
catch (Exception ex) { catch (Exception ex) {