Class Metadata
Keys are allowed to be associated with more than one value.
This class is not thread safe, implementations should ensure that header reads and writes do not occur in multiple threads concurrently.
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic interface
Marshaller for metadata values that are serialized into ASCII strings.static interface
Marshaller for metadata values that are serialized into raw binary.static interface
Marshaller for metadata values that are serialized to an InputStream.static class
Key for metadata entries. -
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final Metadata.AsciiMarshaller
<String> Simple metadata marshaller that encodes strings as is.static final Metadata.BinaryMarshaller
<byte[]> Simple metadata marshaller that encodes bytes as is.static final String
All binary headers should have this suffix in their names. -
Constructor Summary
ConstructorsConstructorDescriptionMetadata()
Constructor called by the application layer when it wants to send metadata. -
Method Summary
Modifier and TypeMethodDescriptionboolean
containsKey
(Metadata.Key<?> key) Returns true if a value is defined for the given key.<T> void
discardAll
(Metadata.Key<T> key) Remove all values for the given key without returning them.<T> T
get
(Metadata.Key<T> key) Returns the last metadata entry added with the name 'name' parsed as T.<T> Iterable
<T> getAll
(Metadata.Key<T> key) Returns all the metadata entries named 'name', in the order they were received, parsed as T, or null if there are none.keys()
Returns set of all keys in store.void
Perform a simple merge of two sets of metadata.void
merge
(Metadata other, Set<Metadata.Key<?>> keys) Merge values from the given set of keys into this set of metadata.<T> void
put
(Metadata.Key<T> key, T value) Adds thekey, value
pair.<T> boolean
remove
(Metadata.Key<T> key, T value) Removes the first occurrence ofvalue
forkey
.<T> Iterable
<T> removeAll
(Metadata.Key<T> key) Remove all values for the given key.toString()
-
Field Details
-
BINARY_HEADER_SUFFIX
All binary headers should have this suffix in their names. Vice versa.Its value is
"-bin"
. An ASCII header's name must not end with this.- See Also:
-
BINARY_BYTE_MARSHALLER
Simple metadata marshaller that encodes bytes as is.This should be used when raw bytes are favored over un-serialized version of object. Can be helpful in situations where more processing to bytes is needed on application side, avoids double encoding/decoding.
Both
Metadata.BinaryMarshaller.toBytes(T)
andMetadata.BinaryMarshaller.parseBytes(byte[])
methods do not return a copy of the byte array. Do _not_ modify the byte arrays of either the arguments or return values. -
ASCII_STRING_MARSHALLER
Simple metadata marshaller that encodes strings as is.This should be used with ASCII strings that only contain the characters listed in the class comment of
Metadata.AsciiMarshaller
. Otherwise the output may be considered invalid and discarded by the transport, or the call may fail.
-
-
Constructor Details
-
Metadata
public Metadata()Constructor called by the application layer when it wants to send metadata.
-
-
Method Details
-
containsKey
Returns true if a value is defined for the given key.This is done by linear search, so if it is followed by
get(io.grpc.Metadata.Key<T>)
orgetAll(io.grpc.Metadata.Key<T>)
, prefer calling them directly and checking the return value againstnull
. -
get
Returns the last metadata entry added with the name 'name' parsed as T.- Returns:
- the parsed metadata entry or null if there are none.
-
getAll
Returns all the metadata entries named 'name', in the order they were received, parsed as T, or null if there are none. The iterator is not guaranteed to be "live." It may or may not be accurate if Metadata is mutated. -
keys
Returns set of all keys in store.- Returns:
- unmodifiable Set of keys
-
put
Adds thekey, value
pair. Ifkey
already has values,value
is added to the end. Duplicate values for the same key are permitted.- Throws:
NullPointerException
- if key or value is null
-
remove
Removes the first occurrence ofvalue
forkey
.- Parameters:
key
- key for valuevalue
- value- Returns:
true
ifvalue
removed;false
ifvalue
was not present- Throws:
NullPointerException
- ifkey
orvalue
is null
-
removeAll
Remove all values for the given key. If there were no values,null
is returned. -
discardAll
@ExperimentalApi("https://github.com/grpc/grpc-java/issues/4691") public <T> void discardAll(Metadata.Key<T> key) Remove all values for the given key without returning them. This is a minor performance optimization if you do not need the previous values. -
merge
Perform a simple merge of two sets of metadata.This is a purely additive operation, because a single key can be associated with multiple values.
-
merge
Merge values from the given set of keys into this set of metadata. If a key is present in keys, then all of the associated values will be copied over.- Parameters:
other
- The source of the new key values.keys
- The subset of matching key we want to copy, if they exist in the source.
-
toString
-