[Modify] Polish it

This commit is contained in:
sta 2016-06-22 15:11:33 +09:00
parent e2ab760ca6
commit 40c993a2de

View File

@ -650,28 +650,33 @@ namespace WebSocketSharp
} }
internal static void ReadBytesAsync ( internal static void ReadBytesAsync (
this Stream stream, int length, Action<byte[]> completed, Action<Exception> error) this Stream stream, int length, Action<byte[]> completed, Action<Exception> error
)
{ {
var buff = new byte[length]; var buff = new byte[length];
var offset = 0; var offset = 0;
var retry = 0; var retry = 0;
AsyncCallback callback = null; AsyncCallback callback = null;
callback = ar => { callback =
ar => {
try { try {
var nread = stream.EndRead (ar); var nread = stream.EndRead (ar);
if (nread == 0 && retry < _retry) { if (nread == 0 && retry < _retry) {
retry++; retry++;
stream.BeginRead (buff, offset, length, callback, null);
return;
} }
else if (nread == 0 || nread == length) {
if (nread == 0 || nread == length) {
if (completed != null) if (completed != null)
completed (buff.SubArray (0, offset + nread)); completed (buff.SubArray (0, offset + nread));
return; return;
} }
else {
retry = 0; retry = 0;
}
offset += nread; offset += nread;
length -= nread; length -= nread;