From bee39e08a9274ba12dbb8ec008f00b4f35343e01 Mon Sep 17 00:00:00 2001 From: sta Date: Tue, 15 Sep 2015 15:27:03 +0900 Subject: [PATCH] [Modify] Polish it --- websocket-sharp/Ext.cs | 36 +++++++++++++++--------------------- 1 file changed, 15 insertions(+), 21 deletions(-) diff --git a/websocket-sharp/Ext.cs b/websocket-sharp/Ext.cs index a0975b49..eac5a1e6 100644 --- a/websocket-sharp/Ext.cs +++ b/websocket-sharp/Ext.cs @@ -205,15 +205,6 @@ namespace WebSocketSharp 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 #region Internal Methods @@ -606,20 +597,23 @@ namespace WebSocketSharp internal static byte[] ReadBytes (this Stream stream, long length, int bufferLength) { using (var dest = new MemoryStream ()) { - var cnt = length / bufferLength; - var rem = (int) (length % bufferLength); - - var buff = new byte[bufferLength]; - var end = false; - for (long i = 0; i < cnt; i++) { - if (!stream.writeTo (dest, bufferLength, buff)) { - end = true; - break; + try { + var buff = new byte[bufferLength]; + var nread = 0; + while (length > 0) { + if (length < bufferLength) + bufferLength = (int) length; + + nread = stream.Read (buff, 0, bufferLength); + if (nread == 0) + break; + + dest.Write (buff, 0, nread); + length -= nread; } } - - if (!end && rem > 0) - stream.writeTo (dest, rem, new byte[rem]); + catch { + } dest.Close (); return dest.ToArray ();