public void encodeMaxDynamicTableSize(ByteBuffer buffer, int maxDynamicTableSize) { if (maxDynamicTableSize>_remoteMaxDynamicTableSize) throw new IllegalArgumentException(); buffer.put((byte)0x20); NBitInteger.encode(buffer,5,maxDynamicTableSize); _context.resize(maxDynamicTableSize); }
static void encodeValue(ByteBuffer buffer, boolean huffman, String value) { if (huffman) { // huffman literal value buffer.put((byte)0x80); NBitInteger.encode(buffer,7,Huffman.octetsNeeded(value)); Huffman.encode(buffer,value); } else { // add literal assuming iso_8859_1 buffer.put((byte)0x00); NBitInteger.encode(buffer,7,value.length()); for (int i=0;i<value.length();i++) { char c=value.charAt(i); if (c<' '|| c>127) throw new IllegalArgumentException(); buffer.put((byte)c); } } } }
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)); } }
StaticEntry(int index,HttpField field) { super(field); _slot=index; String value = field.getValue(); if (value!=null && value.length()>0) { int huffmanLen = Huffman.octetsNeeded(value); int lenLen = NBitInteger.octectsNeeded(7,huffmanLen); _huffmanValue = new byte[1+lenLen+huffmanLen]; ByteBuffer buffer = ByteBuffer.wrap(_huffmanValue); // Indicate Huffman buffer.put((byte)0x80); // Add huffman length NBitInteger.encode(buffer,7,huffmanLen); // Encode value Huffman.encode(buffer,value); } else _huffmanValue=null; _encodedField=(byte)(0x80|index); }
NBitInteger.encode(buffer,7,index); if (_debug) encoding="IdxField"+(entry.isStatic()?"S":"")+(1+NBitInteger.octectsNeeded(7,index));