public static HTTP2FrameHeaderAndPayload CreateRSTFrame(UInt32 streamId, HTTP2ErrorCodes errorCode) { // https://httpwg.org/specs/rfc7540.html#RST_STREAM HTTP2FrameHeaderAndPayload frame = new HTTP2FrameHeaderAndPayload(); frame.Type = HTTP2FrameTypes.RST_STREAM; frame.Flags = 0; frame.StreamId = streamId; frame.Payload = BufferPool.Get(4, true); frame.PayloadLength = 4; BufferHelper.SetUInt32(frame.Payload, 0, (UInt32)errorCode); return(frame); }
public static HTTP2FrameHeaderAndPayload CreateSettingsFrame(List <KeyValuePair <HTTP2Settings, UInt32> > settings) { HTTP2FrameHeaderAndPayload frame = new HTTP2FrameHeaderAndPayload(); frame.Type = HTTP2FrameTypes.SETTINGS; frame.Flags = 0; frame.PayloadLength = (UInt32)settings.Count * 6; frame.Payload = BufferPool.Get(frame.PayloadLength, true); for (int i = 0; i < settings.Count; ++i) { BufferHelper.SetUInt16(frame.Payload, i * 6, (UInt16)settings[i].Key); BufferHelper.SetUInt32(frame.Payload, (i * 6) + 2, settings[i].Value); } return(frame); }