[Modify] Polish it

master
sta 10 years ago
parent 40c993a2de
commit 33bbfddda6

@ -703,53 +703,58 @@ namespace WebSocketSharp
long length, long length,
int bufferLength, int bufferLength,
Action<byte[]> completed, Action<byte[]> completed,
Action<Exception> error) Action<Exception> error
)
{ {
var dest = new MemoryStream (); var dest = new MemoryStream ();
var buff = new byte[bufferLength]; var buff = new byte[bufferLength];
var retry = 0; var retry = 0;
Action<long> read = null; Action<long> read = null;
read = len => { read =
if (len < bufferLength) len => {
bufferLength = (int) len; if (len < bufferLength)
bufferLength = (int) len;
stream.BeginRead (
buff, stream.BeginRead (
0, buff,
bufferLength, 0,
ar => { bufferLength,
try { ar => {
var nread = stream.EndRead (ar); try {
if (nread > 0) var nread = stream.EndRead (ar);
dest.Write (buff, 0, nread); if (nread > 0)
dest.Write (buff, 0, nread);
if (nread == 0 && retry < _retry) {
retry++; if (nread == 0 && retry < _retry) {
} retry++;
else if (nread == 0 || nread == len) { read (len);
if (completed != null) {
dest.Close (); return;
completed (dest.ToArray ()); }
if (nread == 0 || nread == len) {
if (completed != null) {
dest.Close ();
completed (dest.ToArray ());
}
dest.Dispose ();
return;
} }
dest.Dispose ();
return;
}
else {
retry = 0; retry = 0;
read (len - nread);
} }
catch (Exception ex) {
read (len - nread); dest.Dispose ();
} if (error != null)
catch (Exception ex) { error (ex);
dest.Dispose (); }
if (error != null) },
error (ex); null
} );
}, };
null);
};
try { try {
read (length); read (length);

Loading…
Cancel
Save