示例#1
0
        private static void TestDecode(byte[] encoded, string expectedHeaderName, string expectedHeaderValue, bool expectDynamicTableEntry, bool byteAtATime)
        {
            var decoder = new QPackDecoder(MaxHeaderFieldSize);
            var handler = new TestHttpHeadersHandler();

            // Read past header
            decoder.Decode(new byte[] { 0x00, 0x00 }, endHeaders: false, handler: handler);

            if (!byteAtATime)
            {
                decoder.Decode(encoded, endHeaders: true, handler: handler);
            }
            else
            {
                // Parse data in 1 byte chunks, separated by empty chunks
                for (int i = 0; i < encoded.Length; i++)
                {
                    bool end = i + 1 == encoded.Length;

                    decoder.Decode(Array.Empty <byte>(), endHeaders: false, handler: handler);
                    decoder.Decode(new byte[] { encoded[i] }, endHeaders: end, handler: handler);
                }
            }

            Assert.Equal(expectedHeaderValue, handler.DecodedHeaders[expectedHeaderName]);
        }
示例#2
0
        public void DecodesIndexedHeaderField_StaticTableWithValue()
        {
            _decoder.Decode(new byte[] { 0, 0 }, endHeaders: false, handler: _handler);
            _decoder.Decode(_indexedFieldLineStatic, endHeaders: true, handler: _handler);
            Assert.Equal("GET", _handler.DecodedHeaders[":method"]);

            Assert.Equal(":method", _handler.DecodedStaticHeaders[H3StaticTable.MethodGet].Key);
            Assert.Equal("GET", _handler.DecodedStaticHeaders[H3StaticTable.MethodGet].Value);
        }
            internal async Task <Dictionary <string, string> > ExpectHeadersAsync()
            {
                var http3WithPayload = await ReceiveFrameAsync();

                _qpackDecoder.Decode(http3WithPayload.PayloadSequence, this);
                return(_decodedHeaders);
            }
示例#4
0
            internal async Task <IEnumerable <KeyValuePair <string, string> > > ExpectHeadersAsync()
            {
                var http3WithPayload = await ReceiveFrameAsync();

                _qpackDecoder.Decode(http3WithPayload.PayloadSequence, this);
                return(_decodedHeaders);
            }