|
|
@ -296,6 +296,44 @@ namespace WebSocketSharp |
|
|
|
destination.Write (buff, 0, nread); |
|
|
|
} |
|
|
|
|
|
|
|
internal static void CopyToAsync ( |
|
|
|
this Stream source, |
|
|
|
Stream destination, |
|
|
|
int bufferLength, |
|
|
|
Action completed, |
|
|
|
Action<Exception> error) |
|
|
|
{ |
|
|
|
var buff = new byte[bufferLength]; |
|
|
|
|
|
|
|
AsyncCallback callback = null; |
|
|
|
callback = ar => { |
|
|
|
try { |
|
|
|
var nread = source.EndRead (ar); |
|
|
|
if (nread <= 0) { |
|
|
|
if (completed != null) |
|
|
|
completed (); |
|
|
|
|
|
|
|
return; |
|
|
|
} |
|
|
|
|
|
|
|
destination.Write (buff, 0, nread); |
|
|
|
source.BeginRead (buff, 0, bufferLength, callback, null); |
|
|
|
} |
|
|
|
catch (Exception ex) { |
|
|
|
if (error != null) |
|
|
|
error (ex); |
|
|
|
} |
|
|
|
}; |
|
|
|
|
|
|
|
try { |
|
|
|
source.BeginRead (buff, 0, bufferLength, callback, null); |
|
|
|
} |
|
|
|
catch (Exception ex) { |
|
|
|
if (error != null) |
|
|
|
error (ex); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
internal static byte[] Decompress (this byte[] data, CompressionMethod method) |
|
|
|
{ |
|
|
|
return method == CompressionMethod.Deflate |
|
|
|