private void writeString(String data) throws IOException {
            byte[] stringBytes = data.getBytes();
            if (Huffman.get().encodedLength(data) < stringBytes.length) {
                ByteBuffer buffer = ByteBuffer.allocate(stringBytes.length);
                Huffman.get().encode(data, buffer);
                buffer.flip();
                writeInt(buffer.remaining(), PREFIX_7_BITS, 0x80);
                mOut.write(buffer.array(), buffer.position(), buffer.remaining());
            } else {
                writeInt(stringBytes.length, PREFIX_7_BITS, 0);
                mOut.write(data.getBytes());
            }
        }
Read and write HPACK v10.

https://httpwg.org/specs/rfc7540.html#HeaderBlock

This implementation uses an array for the dynamic table and a list for indexed entries.  Dynamic
entries are added to the array, starting in the last position moving forward.  When the array
fills, it is doubled.

@author Megatron King
@since 2019/1/5 20:13
netbare-core/src/main/java/com/github/megatronking/netbare/http2/Hpack.java