/** * @param localMaxDynamicTableSize The maximum allowed size of the local dynamic header field table. * @param maxHeaderSize The maximum allowed size of a headers block, expressed as total of all name and value characters, plus 32 per field */ public HpackDecoder(int localMaxDynamicTableSize, int maxHeaderSize) { _context=new HpackContext(localMaxDynamicTableSize); _localMaxDynamicTableSize=localMaxDynamicTableSize; _builder = new MetaDataBuilder(maxHeaderSize); }
public void setMaxHeaderListSize(int value) { hpackEncoder.setMaxHeaderListSize(value); } }
private void encodeName(ByteBuffer buffer, byte mask, int bits, String name, Entry entry) { buffer.put(mask); if (entry==null) { // leave name index bits as 0 // Encode the name always with lowercase huffman buffer.put((byte)0x80); NBitInteger.encode(buffer,7,Huffman.octetsNeededLC(name)); Huffman.encodeLC(buffer,name); } else { NBitInteger.encode(buffer,bits,_context.index(entry)); } }
public void setHeaderTableSize(int headerTableSize) { hpackEncoder.setRemoteMaxDynamicTableSize(headerTableSize); }
void streamException(String messageFormat, Object... args) { HpackException.StreamException stream = new HpackException.StreamException(messageFormat, args); if (_streamException==null) _streamException = stream; else _streamException.addSuppressed(stream); }
public Parser(ByteBufferPool byteBufferPool, Listener listener, int maxDynamicTableSize, int maxHeaderSize) { this.byteBufferPool = byteBufferPool; this.listener = listener; this.headerParser = new HeaderParser(); this.hpackDecoder = new HpackDecoder(maxDynamicTableSize, maxHeaderSize); this.maxFrameLength = Frame.DEFAULT_MAX_LENGTH; this.bodyParsers = new BodyParser[FrameType.values().length]; }
public static void encode(ByteBuffer buffer,String s) { encode(CODES,buffer,s); }
public static int octetsNeeded(String s) { return octetsNeeded(CODES,s); }
public Entry get(int index) { if (index<=STATIC_SIZE) return __staticTable[index]; return _dynamicTable.get(index); }
/** * @return Current dynamic table size in entries */ public int size() { return _dynamicTable.size(); }
/** * Check that the max size will not be exceeded. * @param length the length * @param huffman the huffman name * @throws SessionException in case of size errors */ public void checkSize(int length, boolean huffman) throws SessionException { // Apply a huffman fudge factor if (huffman) length=(length*4)/3; if ((_size+length)>_maxSize) throw new HpackException.SessionException("Header too large %d > %d", _size+length, _maxSize); } }
public static String decode(ByteBuffer buffer) throws HpackException.CompressionException { return decode(buffer,buffer.remaining()); }
public HpackEncoder(int localMaxDynamicTableSize,int remoteMaxDynamicTableSize, int maxHeaderListSize) { _context=new HpackContext(remoteMaxDynamicTableSize); _remoteMaxDynamicTableSize=remoteMaxDynamicTableSize; _localMaxDynamicTableSize=localMaxDynamicTableSize; _maxHeaderListSize=maxHeaderListSize; _debug=LOG.isDebugEnabled(); }
public Entry get(HttpHeader header) { Entry e = __staticTableByHeader[header.ordinal()]; if (e==null) return get(header.asString()); return e; }
public void setMaxHeaderListSize(int value) { hpackEncoder.setMaxHeaderListSize(value); } }
public void setHeaderTableSize(int headerTableSize) { hpackEncoder.setRemoteMaxDynamicTableSize(headerTableSize); }
public static void encodeLC(ByteBuffer buffer, String s) { encode(LCCODES,buffer,s); }
public static int octetsNeededLC(String s) { return octetsNeeded(LCCODES,s); }