public void UpdateMaxHeaderTableSize(uint maxHeaderTableSize)
 {
     lock (_writeLock)
     {
         _hpackEncoder.UpdateMaxHeaderTableSize(maxHeaderTableSize);
     }
 }
        public void BeginEncodeHeaders_MaxHeaderTableSizeUpdated_SizeUpdateInHeaders()
        {
            Span <byte> buffer = new byte[1024 * 16];

            var hpackEncoder = new HPackEncoder();

            hpackEncoder.UpdateMaxHeaderTableSize(100);

            var enumerator = new Http2HeadersEnumerator();

            // First request
            enumerator.Initialize(new Dictionary <string, StringValues>());
            Assert.True(HPackHeaderWriter.BeginEncodeHeaders(hpackEncoder, enumerator, buffer, out var length));

            Assert.Equal(2, length);

            const byte DynamicTableSizeUpdateMask = 0xe0;

            var integerDecoder = new IntegerDecoder();

            Assert.False(integerDecoder.BeginTryDecode((byte)(buffer[0] & ~DynamicTableSizeUpdateMask), prefixLength: 5, out _));
            Assert.True(integerDecoder.TryDecode(buffer[1], out var result));

            Assert.Equal(100, result);

            // Second request
            enumerator.Initialize(new Dictionary <string, StringValues>());
            Assert.True(HPackHeaderWriter.BeginEncodeHeaders(hpackEncoder, enumerator, buffer, out length));

            Assert.Equal(0, length);
        }