Example #1
0
            private void WriteCurrentFrameHeader(ref HeaderEncodingState state, int frameLength, bool isLastFrame)
            {
                Debug.Assert(frameLength > 0);

                FrameHeader frameHeader = new FrameHeader();

                frameHeader.Length   = frameLength;
                frameHeader.StreamId = _streamId;

                if (state.IsFirstFrame)
                {
                    frameHeader.Type  = FrameType.Headers;
                    frameHeader.Flags = (state.IsEmptyResponse ? FrameFlags.EndStream : FrameFlags.None);
                }
                else
                {
                    frameHeader.Type  = FrameType.Continuation;
                    frameHeader.Flags = FrameFlags.None;
                }

                if (isLastFrame)
                {
                    frameHeader.Flags |= FrameFlags.EndHeaders;
                }

                // Update the curent HEADERS or CONTINUATION frame with length, and write it to the buffer.
                frameHeader.WriteTo(_requestBuffer.ActiveSpan.Slice(state.CurrentFrameOffset));
            }
Example #2
0
 private void WriteFrameHeader(FrameHeader frameHeader)
 {
     _outgoingBuffer.EnsureAvailableSpace(FrameHeader.Size);
     frameHeader.WriteTo(_outgoingBuffer.AvailableSpan);
     _outgoingBuffer.Commit(FrameHeader.Size);
 }