public override void ParsePayload (byte[] payloadData, FrameHeader frameHeader) { EndHeaders = (frameHeader.Flags & 0x4) == 0x4; HeaderBlockFragment = new byte[payloadData.Length]; payloadData.CopyTo (HeaderBlockFragment, 0); }
public override void ParsePayload (byte[] payloadData, FrameHeader frameHeader) { Ack = (frameHeader.Flags & 0x1) == 0x1; for (int i = 0; i < payloadData.Length; i+=6) { var value = BitConverter.ToUInt32 (payloadData, i + 2); switch (value) { case 0x1: HeaderTableSize = value; break; case 0x2: EnablePush = value == 1; break; case 0x3: MaxConcurrentStreams = value; break; case 0x4: InitialWindowSize = value; break; case 0x5: MaxFrameSize = value; break; case 0x6: MaxHeaderListSize = value; break; } } }
public override void ParsePayload (byte[] payloadData, FrameHeader frameHeader) { EndHeaders = (frameHeader.Flags & 0x4) == 0x4; Padded = (frameHeader.Flags & 0x8) == 0x8; var index = 0; if (Padded) { // Get pad length (1 byte) padLength = (ushort)payloadData [index]; index++; } else { padLength = 0; } // Get Dependency Stream Id // we need to turn the stream id into a uint var frameStreamIdData = new byte[4]; Array.Copy (payloadData, index, frameStreamIdData, 0, 4); StreamDependency = Util.ConvertFromUInt31 (frameStreamIdData.EnsureBigEndian ()); // Advance the index index += 4; // create an array for the header data to read // it will be the payload length, minus the pad length value, weight, stream id, and padding HeaderBlockFragment = new byte[payloadData.Length - (index + padLength)]; Array.Copy (payloadData, index, HeaderBlockFragment, 0, HeaderBlockFragment.Length); // Advance the index index += HeaderBlockFragment.Length; // Don't care about padding }
public override void ParsePayload (byte[] payloadData, FrameHeader frameHeader) { // we need to turn the stream id into a uint var windowSizeIncrData = new byte[4]; Array.Copy (payloadData, 0, windowSizeIncrData, 0, 4); WindowSizeIncrement = Util.ConvertFromUInt31 (windowSizeIncrData.EnsureBigEndian ()); }
public override void ParsePayload (byte[] payloadData, FrameHeader frameHeader) { if (payloadData != null && payloadData.Length > 0) ErrorCode = (ErrorCode)payloadData [0]; else ErrorCode = ErrorCode.NoError; }
public override void ParsePayload(byte[] payloadData, FrameHeader frameHeader) { Ack = (frameHeader.Flags & 0x1) == 0x1; opaqueData = new byte[64]; if (payloadData != null) Array.Copy (payloadData, 0, opaqueData, 0, opaqueData.Length); }
public override void ParsePayload (byte[] payloadData, FrameHeader frameHeader) { // Get Dependency Stream Id // we need to turn the stream id into a uint var frameStreamIdData = new byte[4]; Array.Copy (payloadData, 0, frameStreamIdData, 0, 4); StreamDependency = Util.ConvertFromUInt31 (frameStreamIdData.EnsureBigEndian ()); // Get the weight weight = (ushort)payloadData [4]; }
public override void ParsePayload (byte[] payloadData, FrameHeader frameHeader) { EndStream = (frameHeader.Flags & 0x1) == 0x1; Padded = (frameHeader.Flags & 0x8) == 0x8; var index = 0; if (Padded) { padLength = (ushort)payloadData [index]; index++; } // Data will be length of total payload - pad length value - the actual padding Data = new byte[payloadData.Length - (index + padLength)]; Array.Copy (payloadData, index, Data, 0, Data.Length); }
public override void ParsePayload (byte[] payloadData, FrameHeader frameHeader) { // we need to turn the stream id into a uint var frameStreamIdData = new byte[4]; Array.Copy (payloadData, 0, frameStreamIdData, 0, 4); LastStreamId = Util.ConvertFromUInt31 (frameStreamIdData.EnsureBigEndian ()); var errorCodeData = new byte[4]; Array.Copy (payloadData, 4, errorCodeData, 0, 4); uint errorCode = BitConverter.ToUInt32 (errorCodeData.EnsureBigEndian (), 0); ErrorCode = errorCode; if (payloadData.Length > 8) { AdditionalDebugData = new byte[payloadData.Length - 8]; Array.Copy(payloadData, 8, AdditionalDebugData, 0, payloadData.Length - 8); } }
public override void ParsePayload(byte[] payloadData, FrameHeader frameHeader) { EndHeaders = (frameHeader.Flags & 0x4) == 0x4; Padded = (frameHeader.Flags & 0x8) == 0x8; var index = 0; if (Padded) { // Get pad length (1 byte) padLength = (ushort)payloadData [index]; index++; } else { padLength = 0; } // Get Dependency Stream Id // we need to turn the stream id into a uint var frameStreamIdData = new byte[4]; Array.Copy(payloadData, index, frameStreamIdData, 0, 4); StreamDependency = Util.ConvertFromUInt31(frameStreamIdData.EnsureBigEndian()); // Advance the index index += 4; // create an array for the header data to read // it will be the payload length, minus the pad length value, weight, stream id, and padding HeaderBlockFragment = new byte[payloadData.Length - (index + padLength)]; Array.Copy(payloadData, index, HeaderBlockFragment, 0, HeaderBlockFragment.Length); // Advance the index index += HeaderBlockFragment.Length; // Don't care about padding }
public override void ParsePayload(byte[] payloadData, FrameHeader frameHeader) { Ack = (frameHeader.Flags & 0x1) == 0x1; for (int i = 0; i < payloadData.Length; i += 6) { var value = BitConverter.ToUInt32(payloadData, i + 2); switch (value) { case 0x1: HeaderTableSize = value; break; case 0x2: EnablePush = value == 1; break; case 0x3: MaxConcurrentStreams = value; break; case 0x4: InitialWindowSize = value; break; case 0x5: MaxFrameSize = value; break; case 0x6: MaxHeaderListSize = value; break; } } }
public abstract void ParsePayload(byte[] payloadData, FrameHeader frameHeader);
public abstract void ParsePayload (byte[] payloadData, FrameHeader frameHeader);
internal void Parse (byte[] data) { if (data.Length < 9) throw new InvalidDataException ("data[] is missing frame header"); // Find out the frame length // which is a 24 bit uint, so we need to convert this as c# uint is 32 bit var flen = new byte[4]; flen [0] = 0x0; flen [1] = data [0]; flen [2] = data [1]; flen [3] = data [2]; var frameLength = BitConverter.ToUInt32 (flen.EnsureBigEndian (), 0); // If we are expecting a payload that's bigger than what's in our buffer // we should keep reading from the stream if (data.Length - 9 < frameLength) throw new InvalidDataException ("Length of data[] does not match frame length in data"); var frameType = data [3]; // 4th byte in frame header is TYPE var frameFlags = data [4]; // 5th byte is FLAGS // we need to turn the stream id into a uint var frameStreamIdData = new byte[4]; Array.Copy (data, 5, frameStreamIdData, 0, 4); this.StreamIdentifier = Util.ConvertFromUInt31 (frameStreamIdData.EnsureBigEndian ()); //this.Type = frameType; this.Flags = frameFlags; var frameHeader = new FrameHeader { Length = frameLength, Type = frameType, Flags = frameFlags, StreamIdentifier = this.StreamIdentifier }; // Isolate the payload data var payloadData = new byte[frameLength]; Array.Copy (data, 9, payloadData, 0, frameLength); ParsePayload (payloadData, frameHeader); }