private String readHeaderName(ByteBuffer buffer, int prefixLength) throws HpackException { buffer.position(buffer.position() - 1); //unget the byte int index = Hpack.decodeInteger(buffer, prefixLength); if (index == -1) { return null; } else if (index != 0) { return handleIndexedHeaderName(index); } else { return readHpackString(buffer); } }
private void writeHuffmanEncodableName(ByteBuffer target, String headerName) { if (hpackHeaderFunction.shouldUseHuffman(headerName)) { if(HPackHuffman.encode(target, headerName, true)) { return; } } target.put((byte) 0); //to use encodeInteger we need to place the first byte in the buffer. Hpack.encodeInteger(target, headerName.length(), 7); for (int j = 0; j < headerName.length(); ++j) { target.put((byte) Hpack.toLower(headerName.charAt(j))); } }
private void writeValueString(ByteBuffer target, String val) { target.put((byte) 0); //to use encodeInteger we need to place the first byte in the buffer. Hpack.encodeInteger(target, val.length(), 7); for (int j = 0; j < val.length(); ++j) { target.put((byte) val.charAt(j)); } }
private void handleTableSizeChange(ByteBuffer target) { if (newMaxHeaderSize == -1) { return; } if (minNewMaxHeaderSize != newMaxHeaderSize) { target.put((byte) (1 << 5)); Hpack.encodeInteger(target, minNewMaxHeaderSize, 5); } target.put((byte) (1 << 5)); Hpack.encodeInteger(target, newMaxHeaderSize, 5); maxTableSize = newMaxHeaderSize; runEvictionIfRequired(); newMaxHeaderSize = -1; minNewMaxHeaderSize = -1; }
c = Hpack.toLower(c); Hpack.encodeInteger(buffer, byteLength, 7); char c = toEncode.charAt(i); if(forceLowercase) { c = Hpack.toLower(c);
Hpack.encodeInteger(target, tableEntry.getPosition(), 7); } else { if (canIndex) { Hpack.encodeInteger(target, tableEntry.getPosition(), 6); writeHuffmanEncodableValue(target, headerName, val); addToDynamicTable(headerName, val); Hpack.encodeInteger(target, tableEntry.getPosition(), 4); writeHuffmanEncodableValue(target, headerName, val);
int size = Hpack.decodeInteger(buffer, 5); if (size == -1) { buffer.position(originalPos);