System.ServiceModel.Http2Protocol.FrameSerializer.ParseControlFrameHeaders C# (CSharp) Метод

ParseControlFrameHeaders() приватный Метод

Parses HTTP headers of Http2 control frame.
private ParseControlFrameHeaders ( ControlFrame &frame, byte data, int offset ) : void
frame System.ServiceModel.Http2Protocol.ProtocolFrames.ControlFrame The frame.
data byte The data.
offset int Offset of HTTP headers in the data.
Результат void
        private void ParseControlFrameHeaders(ref ControlFrame frame, byte[] data, int offset)
        {
            var headers = new byte[data.Length - offset];
            Array.Copy(data, offset, headers, 0, headers.Length);
            if (headers.Length > 0)
                ProcessorRun(ref headers, DirectionProcessType.Inbound, frame.Flags);

            int headersOffset = 0;
            int numberOfKeyValue = BinaryHelper.Int32FromBytes(new ArraySegment<byte>(headers, headersOffset, 4));
            headersOffset += 4;

            for (int i = 0; i < numberOfKeyValue; ++i)
            {
                int nameLength = BinaryHelper.Int32FromBytes(new ArraySegment<byte>(headers, headersOffset, 4));
                headersOffset += 4;
                string name = Encoding.UTF8.GetString(headers, headersOffset, nameLength);
                headersOffset += nameLength;

                int valLength = BinaryHelper.Int32FromBytes(new ArraySegment<byte>(headers, headersOffset, 4));
                headersOffset += 4;
                string val = Encoding.UTF8.GetString(headers, headersOffset, valLength);
                headersOffset += valLength;
                // Ensure no duplicates.
                if (frame.Headers.ContainsKey(name))
                {
                    throw new ProtocolExeption(StatusCode.InternalError);
                }

                frame.Headers.Add(name, val);
            }
        }