Package io.grpc.netty
Class GrpcHttp2HeadersUtils.GrpcHttp2InboundHeaders
- java.lang.Object
-
- io.grpc.netty.AbstractHttp2Headers
-
- io.grpc.netty.GrpcHttp2HeadersUtils.GrpcHttp2InboundHeaders
-
- All Implemented Interfaces:
io.netty.handler.codec.Headers<java.lang.CharSequence,java.lang.CharSequence,io.netty.handler.codec.http2.Http2Headers>,io.netty.handler.codec.http2.Http2Headers,java.lang.Iterable<java.util.Map.Entry<java.lang.CharSequence,java.lang.CharSequence>>
- Direct Known Subclasses:
GrpcHttp2HeadersUtils.GrpcHttp2RequestHeaders,GrpcHttp2HeadersUtils.GrpcHttp2ResponseHeaders
- Enclosing class:
- GrpcHttp2HeadersUtils
abstract static class GrpcHttp2HeadersUtils.GrpcHttp2InboundHeaders extends AbstractHttp2Headers
AHttp2Headersimplementation optimized for inbound/received headers.Header names and values are stored in simple arrays, which makes insert run in O(1) and retrievial a O(n). Header name equality is not determined by the equals implementation of
CharSequencetype, but by comparing two names byte to byte.All
CharSequenceinput parameters and return values are required to be of typeAsciiString.
-
-
Field Summary
Fields Modifier and Type Field Description private static io.netty.util.AsciiStringbinaryHeaderSuffixprivate byte[][]namesAndValuesprivate intnamesAndValuesIdxprivate io.netty.util.AsciiString[]values
-
Constructor Summary
Constructors Constructor Description GrpcHttp2InboundHeaders(int numHeadersGuess)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description protected io.netty.handler.codec.http2.Http2Headersadd(io.netty.util.AsciiString name, io.netty.util.AsciiString value)private voidaddHeader(io.netty.util.AsciiString value, byte[] nameBytes, byte[] valueBytes)protected static voidappendNameAndValue(java.lang.StringBuilder builder, java.lang.CharSequence name, java.lang.CharSequence value, boolean prependSeparator)protected static byte[]bytes(io.netty.util.AsciiString str)booleancontains(java.lang.CharSequence name)protected static booleanequals(byte[] bytes0, int offset0, int length0, byte[] bytes1, int offset1, int length1)protected static booleanequals(io.netty.util.AsciiString str0, byte[] str1)protected static booleanequals(io.netty.util.AsciiString str0, io.netty.util.AsciiString str1)private voidexpandHeadersAndValues()protected java.lang.CharSequenceget(io.netty.util.AsciiString name)java.util.List<java.lang.CharSequence>getAll(java.lang.CharSequence csName)protected static booleanisPseudoHeader(io.netty.util.AsciiString str)java.util.Iterator<java.util.Map.Entry<java.lang.CharSequence,java.lang.CharSequence>>iterator()(package private) byte[][]namesAndValues()Returns the header names and values as bytes.private java.util.List<java.util.Map.Entry<java.lang.CharSequence,java.lang.CharSequence>>namesAndValuesToImmutableList()protected java.lang.StringnamesAndValuesToString()protected intnumHeaders()Returns the number of none-null headers innamesAndValues().booleanremove(java.lang.CharSequence csName)protected static io.netty.util.AsciiStringrequireAsciiString(java.lang.CharSequence cs)io.netty.handler.codec.http2.Http2Headersset(java.lang.CharSequence name, java.lang.CharSequence value)io.netty.handler.codec.http2.Http2HeaderssetLong(java.lang.CharSequence name, long value)intsize()java.lang.CharSequencestatus()protected io.netty.util.AsciiStringvalidateName(io.netty.util.AsciiString str)-
Methods inherited from class io.grpc.netty.AbstractHttp2Headers
add, add, add, add, addBoolean, addByte, addChar, addDouble, addFloat, addInt, addLong, addObject, addObject, addObject, addShort, addTimeMillis, authority, authority, clear, contains, contains, containsBoolean, containsByte, containsChar, containsDouble, containsFloat, containsInt, containsLong, containsObject, containsShort, containsTimeMillis, get, get, getAllAndRemove, getAndRemove, getAndRemove, getBoolean, getBoolean, getBooleanAndRemove, getBooleanAndRemove, getByte, getByte, getByteAndRemove, getByteAndRemove, getChar, getChar, getCharAndRemove, getCharAndRemove, getDouble, getDouble, getDoubleAndRemove, getDoubleAndRemove, getFloat, getFloat, getFloatAndRemove, getFloatAndRemove, getInt, getInt, getIntAndRemove, getIntAndRemove, getLong, getLong, getLongAndRemove, getLongAndRemove, getShort, getShort, getShortAndRemove, getShortAndRemove, getTimeMillis, getTimeMillis, getTimeMillisAndRemove, getTimeMillisAndRemove, isEmpty, method, method, names, path, path, scheme, scheme, set, set, set, setAll, setBoolean, setByte, setChar, setDouble, setFloat, setInt, setObject, setObject, setObject, setShort, setTimeMillis, status, valueIterator
-
-
-
-
Method Detail
-
add
protected io.netty.handler.codec.http2.Http2Headers add(io.netty.util.AsciiString name, io.netty.util.AsciiString value)
-
addHeader
private void addHeader(io.netty.util.AsciiString value, byte[] nameBytes, byte[] valueBytes)
-
get
protected java.lang.CharSequence get(io.netty.util.AsciiString name)
-
contains
public boolean contains(java.lang.CharSequence name)
- Specified by:
containsin interfaceio.netty.handler.codec.Headers<java.lang.CharSequence,java.lang.CharSequence,io.netty.handler.codec.http2.Http2Headers>- Overrides:
containsin classAbstractHttp2Headers
-
status
public java.lang.CharSequence status()
- Specified by:
statusin interfaceio.netty.handler.codec.http2.Http2Headers- Overrides:
statusin classAbstractHttp2Headers
-
getAll
public java.util.List<java.lang.CharSequence> getAll(java.lang.CharSequence csName)
- Specified by:
getAllin interfaceio.netty.handler.codec.Headers<java.lang.CharSequence,java.lang.CharSequence,io.netty.handler.codec.http2.Http2Headers>- Overrides:
getAllin classAbstractHttp2Headers
-
remove
@CanIgnoreReturnValue public boolean remove(java.lang.CharSequence csName)
- Specified by:
removein interfaceio.netty.handler.codec.Headers<java.lang.CharSequence,java.lang.CharSequence,io.netty.handler.codec.http2.Http2Headers>- Overrides:
removein classAbstractHttp2Headers
-
set
public io.netty.handler.codec.http2.Http2Headers set(java.lang.CharSequence name, java.lang.CharSequence value)- Specified by:
setin interfaceio.netty.handler.codec.Headers<java.lang.CharSequence,java.lang.CharSequence,io.netty.handler.codec.http2.Http2Headers>- Overrides:
setin classAbstractHttp2Headers
-
setLong
public io.netty.handler.codec.http2.Http2Headers setLong(java.lang.CharSequence name, long value)- Specified by:
setLongin interfaceio.netty.handler.codec.Headers<java.lang.CharSequence,java.lang.CharSequence,io.netty.handler.codec.http2.Http2Headers>- Overrides:
setLongin classAbstractHttp2Headers
-
namesAndValues
byte[][] namesAndValues()
Returns the header names and values as bytes. An even numbered index contains thebyte[]representation of a header name (in insertion order), and the subsequent odd index number contains the corresponding header value.The values of binary headers (with a -bin suffix), are already base64 decoded.
The array may contain several
nullvalues at the end. Anullvalue an index means that all higher numbered indices also containnullvalues.
-
numHeaders
protected int numHeaders()
Returns the number of none-null headers innamesAndValues().
-
equals
protected static boolean equals(io.netty.util.AsciiString str0, byte[] str1)
-
equals
protected static boolean equals(io.netty.util.AsciiString str0, io.netty.util.AsciiString str1)
-
equals
protected static boolean equals(byte[] bytes0, int offset0, int length0, byte[] bytes1, int offset1, int length1)
-
bytes
protected static byte[] bytes(io.netty.util.AsciiString str)
-
requireAsciiString
protected static io.netty.util.AsciiString requireAsciiString(java.lang.CharSequence cs)
-
isPseudoHeader
protected static boolean isPseudoHeader(io.netty.util.AsciiString str)
-
validateName
protected io.netty.util.AsciiString validateName(io.netty.util.AsciiString str)
-
expandHeadersAndValues
private void expandHeadersAndValues()
-
size
public int size()
- Specified by:
sizein interfaceio.netty.handler.codec.Headers<java.lang.CharSequence,java.lang.CharSequence,io.netty.handler.codec.http2.Http2Headers>- Overrides:
sizein classAbstractHttp2Headers
-
iterator
public java.util.Iterator<java.util.Map.Entry<java.lang.CharSequence,java.lang.CharSequence>> iterator()
- Specified by:
iteratorin interfaceio.netty.handler.codec.Headers<java.lang.CharSequence,java.lang.CharSequence,io.netty.handler.codec.http2.Http2Headers>- Specified by:
iteratorin interfaceio.netty.handler.codec.http2.Http2Headers- Specified by:
iteratorin interfacejava.lang.Iterable<java.util.Map.Entry<java.lang.CharSequence,java.lang.CharSequence>>- Overrides:
iteratorin classAbstractHttp2Headers
-
appendNameAndValue
protected static void appendNameAndValue(java.lang.StringBuilder builder, java.lang.CharSequence name, java.lang.CharSequence value, boolean prependSeparator)
-
namesAndValuesToImmutableList
private java.util.List<java.util.Map.Entry<java.lang.CharSequence,java.lang.CharSequence>> namesAndValuesToImmutableList()
-
namesAndValuesToString
protected final java.lang.String namesAndValuesToString()
-
-