[Modify] Polish it

master
sta 10 years ago
parent a749a67838
commit bee39e08a9

@ -205,15 +205,6 @@ namespace WebSocketSharp
action (); action ();
} }
private static bool writeTo (this Stream stream, Stream destination, int length, byte[] buffer)
{
var bytes = stream.readBytes (buffer, 0, length);
var len = bytes.Length;
destination.Write (bytes, 0, len);
return len == length;
}
#endregion #endregion
#region Internal Methods #region Internal Methods
@ -606,20 +597,23 @@ namespace WebSocketSharp
internal static byte[] ReadBytes (this Stream stream, long length, int bufferLength) internal static byte[] ReadBytes (this Stream stream, long length, int bufferLength)
{ {
using (var dest = new MemoryStream ()) { using (var dest = new MemoryStream ()) {
var cnt = length / bufferLength; try {
var rem = (int) (length % bufferLength);
var buff = new byte[bufferLength]; var buff = new byte[bufferLength];
var end = false; var nread = 0;
for (long i = 0; i < cnt; i++) { while (length > 0) {
if (!stream.writeTo (dest, bufferLength, buff)) { if (length < bufferLength)
end = true; bufferLength = (int) length;
nread = stream.Read (buff, 0, bufferLength);
if (nread == 0)
break; break;
dest.Write (buff, 0, nread);
length -= nread;
} }
} }
catch {
if (!end && rem > 0) }
stream.writeTo (dest, rem, new byte[rem]);
dest.Close (); dest.Close ();
return dest.ToArray (); return dest.ToArray ();

Loading…
Cancel
Save