From 3521004c43814f0b9ec5c98f9de0d987b20c8f60 Mon Sep 17 00:00:00 2001 From: sta Date: Tue, 22 Sep 2015 12:23:43 +0900 Subject: [PATCH] [Modify] Polish it --- websocket-sharp/WebSocketFrame.cs | 93 ++++++++++++++----------------- 1 file changed, 42 insertions(+), 51 deletions(-) diff --git a/websocket-sharp/WebSocketFrame.cs b/websocket-sharp/WebSocketFrame.cs index 81c39eb6..861a12ea 100644 --- a/websocket-sharp/WebSocketFrame.cs +++ b/websocket-sharp/WebSocketFrame.cs @@ -495,12 +495,12 @@ Extended Payload Length: {7} private static void readExtendedPayloadLengthAsync ( Stream stream, - int length, WebSocketFrame frame, Action completed, Action error) { - if (length == 0) { + var len = frame._payloadLength < 126 ? 0 : (frame._payloadLength == 126 ? 2 : 8); + if (len == 0) { frame._extPayloadLength = WebSocket.EmptyBytes; completed (frame); @@ -508,13 +508,13 @@ Extended Payload Length: {7} } stream.ReadBytesAsync ( - length, - len => { - if (len.Length != length) + len, + bytes => { + if (bytes.Length != len) throw new WebSocketException ( "The 'Extended Payload Length' of a frame cannot be read from the data source."); - frame._extPayloadLength = len; + frame._extPayloadLength = bytes; completed (frame); }, error); @@ -528,7 +528,7 @@ Extended Payload Length: {7} private static void readHeaderAsync ( Stream stream, Action completed, Action error) { - stream.ReadBytesAsync (2, header => completed (processHeader (header)), error); + stream.ReadBytesAsync (2, bytes => completed (processHeader (bytes)), error); } private static WebSocketFrame readMaskingKey (Stream stream, WebSocketFrame frame) @@ -550,12 +550,12 @@ Extended Payload Length: {7} private static void readMaskingKeyAsync ( Stream stream, - int length, WebSocketFrame frame, Action completed, Action error) { - if (length == 0) { + var len = frame.IsMasked ? 4 : 0; + if (len == 0) { frame._maskingKey = WebSocket.EmptyBytes; completed (frame); @@ -563,13 +563,13 @@ Extended Payload Length: {7} } stream.ReadBytesAsync ( - length, - key => { - if (key.Length != length) + len, + bytes => { + if (bytes.Length != len) throw new WebSocketException ( "The 'Masking Key' of a frame cannot be read from the data source."); - frame._maskingKey = key; + frame._maskingKey = bytes; completed (frame); }, error); @@ -608,34 +608,39 @@ Extended Payload Length: {7} private static void readPayloadDataAsync ( Stream stream, - ulong length, WebSocketFrame frame, Action completed, Action error) { - if (length > PayloadData.MaxLength) - throw new WebSocketException ( - CloseStatusCode.TooBig, - "The length of 'Payload Data' of a frame is greater than the allowable max length."); + ulong len = frame._payloadLength < 126 + ? frame._payloadLength + : frame._payloadLength == 126 + ? frame._extPayloadLength.ToUInt16 (ByteOrder.Big) + : frame._extPayloadLength.ToUInt64 (ByteOrder.Big); - var masked = frame._mask == Mask.Mask; - if (length == 0) { - frame._payloadData = new PayloadData (WebSocket.EmptyBytes, masked); + if (len == 0) { + frame._payloadData = new PayloadData (WebSocket.EmptyBytes, frame.IsMasked); completed (frame); return; } + // Check if allowable length. + if (len > PayloadData.MaxLength) + throw new WebSocketException ( + CloseStatusCode.TooBig, + "The length of 'Payload Data' of a frame is greater than the allowable max length."); + if (frame._payloadLength < 127) { - var len = (int) length; + var ilen = (int) len; stream.ReadBytesAsync ( - len, - data => { - if (data.Length != len) + ilen, + bytes => { + if (bytes.Length != ilen) throw new WebSocketException ( "The 'Payload Data' of a frame cannot be read from the data source."); - frame._payloadData = new PayloadData (data, masked); + frame._payloadData = new PayloadData (bytes, frame.IsMasked); completed (frame); }, error); @@ -643,16 +648,16 @@ Extended Payload Length: {7} return; } - var llen = (long) length; + var llen = (long) len; stream.ReadBytesAsync ( llen, 1024, - data => { - if (data.LongLength != llen) + bytes => { + if (bytes.LongLength != llen) throw new WebSocketException ( "The 'Payload Data' of a frame cannot be read from the data source."); - frame._payloadData = new PayloadData (data, masked); + frame._payloadData = new PayloadData (bytes, frame.IsMasked); completed (frame); }, error); @@ -724,41 +729,27 @@ Extended Payload Length: {7} { readHeaderAsync ( stream, - frame => { - var payloadLen = frame._payloadLength; + frame => readExtendedPayloadLengthAsync ( stream, - payloadLen < 126 ? 0 : (payloadLen == 126 ? 2 : 8), frame, - frame1 => { - var masked = frame1._mask == Mask.Mask; + frame1 => readMaskingKeyAsync ( stream, - masked ? 4 : 0, frame1, - frame2 => { - ulong len = payloadLen < 126 - ? payloadLen - : payloadLen == 126 - ? frame2._extPayloadLength.ToUInt16 (ByteOrder.Big) - : frame2._extPayloadLength.ToUInt64 (ByteOrder.Big); - + frame2 => readPayloadDataAsync ( stream, - len, frame2, frame3 => { - if (unmask && masked) + if (unmask && frame3.IsMasked) frame3.Unmask (); completed (frame3); }, - error); - }, - error); - }, - error); - }, + error), + error), + error), error); }