Top Description Inners Fields Constructors Methods
org.apache.coyote.http2

pack-priv Class HpackEncoder

extends Object
Class Inheritance
Imports
java.nio.ByteBuffer, java.util.ArrayDeque, .ArrayList, .Collections, .Deque, .HashMap, .List, .Locale, .Map, org.apache.juli.logging.Log, .LogFactory, org.apache.tomcat.util.http.MimeHeaders, org.apache.tomcat.util.res.StringManager

Encoder for HPACK frames.

Nested and Inner Type Summary

Modifier and TypeClass and Description
private class
private static interface
pack-priv static enum
private static class

Field Summary

Modifier and TypeField and Description
private MimeHeaders
private int
currentTableSize

The current table size

private static final HpackEncoder.HpackHeaderFunction
private final Map<String, List<HpackEncoder.TableEntry>>
private static final Map<String, HpackEncoder.TableEntry[]>
private int
private final Deque<HpackEncoder.TableEntry>
private boolean
private int
private final HpackEncoder.HpackHeaderFunction
private static final Log
private int
maxTableSize

The maximum table size

private int
private int
private static final StringManager

Constructor Summary

AccessConstructor and Description
pack-priv

Method Summary

Modifier and TypeMethod and Description
private void
addToDynamicTable(String headerName, String val)

pack-priv HpackEncoder.State

Returns:

The state of the encoding process
encode
(MimeHeaders
The headers to encode
headers
,
ByteBuffer
The buffer to which to write the encoded headers
target
)

Encodes the headers into a buffer.

private HpackEncoder.TableEntry
findInTable(String headerName, String value)

private void
private void
private void
public void
setMaxTableSize(int newSize)

private void
private void
private void
Inherited from java.lang.Object:
cloneequalsfinalizegetClasshashCodenotifynotifyAlltoStringwaitwaitwait

Field Detail

currentHeadersback to summary
private MimeHeaders currentHeaders
currentTableSizeback to summary
private int currentTableSize

The current table size

DEFAULT_HEADER_FUNCTIONback to summary
private static final HpackEncoder.HpackHeaderFunction DEFAULT_HEADER_FUNCTION
dynamicTableback to summary
private final Map<String, List<HpackEncoder.TableEntry>> dynamicTable
ENCODING_STATIC_TABLEback to summary
private static final Map<String, HpackEncoder.TableEntry[]> ENCODING_STATIC_TABLE
entryPositionCounterback to summary
private int entryPositionCounter
evictionQueueback to summary
private final Deque<HpackEncoder.TableEntry> evictionQueue
firstPassback to summary
private boolean firstPass
headersIteratorback to summary
private int headersIterator
hpackHeaderFunctionback to summary
private final HpackEncoder.HpackHeaderFunction hpackHeaderFunction
logback to summary
private static final Log log
maxTableSizeback to summary
private int maxTableSize

The maximum table size

minNewMaxHeaderSizeback to summary
private int minNewMaxHeaderSize
newMaxHeaderSizeback to summary
private int newMaxHeaderSize
smback to summary
private static final StringManager sm

Constructor Detail

HpackEncoderback to summary
pack-priv HpackEncoder()

Method Detail

addToDynamicTableback to summary
private void addToDynamicTable(String headerName, String val)
encodeback to summary
pack-priv HpackEncoder.State encode(MimeHeaders headers, ByteBuffer target)

Encodes the headers into a buffer.

Parameters
headers:MimeHeaders

The headers to encode

target:ByteBuffer

The buffer to which to write the encoded headers

Returns:HpackEncoder.State

The state of the encoding process

findInTableback to summary
private HpackEncoder.TableEntry findInTable(String headerName, String value)
handleTableSizeChangeback to summary
private void handleTableSizeChange(ByteBuffer target)
preventPositionRolloverback to summary
private void preventPositionRollover()
runEvictionIfRequiredback to summary
private void runEvictionIfRequired()
setMaxTableSizeback to summary
public void setMaxTableSize(int newSize)
writeHuffmanEncodableNameback to summary
private void writeHuffmanEncodableName(ByteBuffer target, String headerName)
writeHuffmanEncodableValueback to summary
private void writeHuffmanEncodableValue(ByteBuffer target, String headerName, String val)
writeValueStringback to summary
private void writeValueString(ByteBuffer target, String val)
org.apache.coyote.http2 back to summary

private Class HpackEncoder.DynamicTableEntry

extends TableEntry
Class Inheritance

Constructor Summary

AccessConstructor and Description
private
DynamicTableEntry(String name, String value, int position)

Method Summary

Modifier and TypeMethod and Description
pack-priv int
Inherited from org.apache.coyote.http2.HpackEncoder.TableEntry:
getSize

Constructor Detail

DynamicTableEntryback to summary
private DynamicTableEntry(String name, String value, int position)

Method Detail

getPositionback to summary
pack-priv int getPosition()

Overrides org.apache.coyote.http2.HpackEncoder.TableEntry.getPosition.

Annotations
@Override
org.apache.coyote.http2 back to summary

private Interface HpackEncoder.HpackHeaderFunction


Method Summary

Modifier and TypeMethod and Description
public boolean

Returns:

true if the value should be encoded
shouldUseHuffman
(String
The header name
header
,
String
The header value to be encoded
value
)

Returns true if huffman encoding should be used on the header value

public boolean

Returns:

true if the value should be encoded
shouldUseHuffman
(String
The header name to be encoded
header
)

Returns true if huffman encoding should be used on the header name

public boolean

Method Detail

shouldUseHuffmanback to summary
public boolean shouldUseHuffman(String header, String value)

Returns true if huffman encoding should be used on the header value

Parameters
header:String

The header name

value:String

The header value to be encoded

Returns:boolean

true if the value should be encoded

shouldUseHuffmanback to summary
public boolean shouldUseHuffman(String header)

Returns true if huffman encoding should be used on the header name

Parameters
header:String

The header name to be encoded

Returns:boolean

true if the value should be encoded

shouldUseIndexingback to summary
public boolean shouldUseIndexing(String header, String value)
org.apache.coyote.http2 back to summary

pack-priv final Enum HpackEncoder.State

extends Enum<HpackEncoder.State>
Class Inheritance

Field Summary

Modifier and TypeField and Description
public static final HpackEncoder.State
public static final HpackEncoder.State

Constructor Summary

AccessConstructor and Description
private

Method Summary

Modifier and TypeMethod and Description
public static HpackEncoder.State
public static HpackEncoder.State[]
Inherited from java.lang.Enum:
clonecompareTodescribeConstableequalsfinalizegetDeclaringClasshashCodenameordinaltoStringvalueOf

Field Detail

COMPLETEback to summary
public static final HpackEncoder.State COMPLETE
UNDERFLOWback to summary
public static final HpackEncoder.State UNDERFLOW

Constructor Detail

Stateback to summary
private State()

Method Detail

valueOfback to summary
public static HpackEncoder.State valueOf(String name)
valuesback to summary
public static HpackEncoder.State[] values()
org.apache.coyote.http2 back to summary

private Class HpackEncoder.TableEntry

extends Object
Class Inheritance
Known Direct Subclasses
org.apache.coyote.http2.HpackEncoder.DynamicTableEntry

Field Summary

Modifier and TypeField and Description
private final String
private int
private final int
private final String

Constructor Summary

AccessConstructor and Description
private
TableEntry(String name, String value, int position)

Method Summary

Modifier and TypeMethod and Description
pack-priv int
pack-priv int
Inherited from java.lang.Object:
cloneequalsfinalizegetClasshashCodenotifynotifyAlltoStringwaitwaitwait

Field Detail

nameback to summary
private final String name
positionback to summary
private int position
sizeback to summary
private final int size
valueback to summary
private final String value

Constructor Detail

TableEntryback to summary
private TableEntry(String name, String value, int position)

Method Detail

getPositionback to summary
pack-priv int getPosition()
getSizeback to summary
pack-priv int getSize()