public interface UnknownFieldSet
UnknownFieldSet
keeps track of fields seen during parsing of a protocol message but whose field numbers are
not recognized by the user provided marshallers (are never requested by them). This usually occurs when new fields
are added to a message type and then messages containing those fields are read by old versions of software that was
built before the new fields were added.
This is also used to handle the case when fields are requested in a different order than they were written to the stream (lowers performance but still works). In this case all fields that are encountered while parsing the stream up to the point where the requested field is finally encountered are cached/buffered in this data structure.
Instances of UnknownFieldSet are never to be created by the user. They will be created by the library and handed
over to the message marshaller via the UnknownFieldSetHandler
mechanism.
Modifier and Type | Method and Description |
---|---|
<A> A |
consumeTag(int tag)
Reads and removes a field value from the set.
|
boolean |
hasTag(int tag)
Checks if a tag is present.
|
boolean |
isEmpty()
Checks if there are any fields in this set.
|
void |
putVarintField(int tag,
int value)
Convenience method for merging a new field containing a single varint value.
|
void |
readAllFields(RawProtoStreamReader input)
Parse an entire message from
input and merge its fields into this set. |
boolean |
readSingleField(int tag,
RawProtoStreamReader input)
Parse a single field from
input and merge it into this set. |
void |
writeTo(RawProtoStreamWriter output)
Writes all fields from this set to the
output stream. |
boolean isEmpty()
void readAllFields(RawProtoStreamReader input) throws IOException
input
and merge its fields into this set.IOException
boolean readSingleField(int tag, RawProtoStreamReader input) throws IOException
input
and merge it into this set.tag
- The field's tag number, which was already parsed (tag contains both field id and wire type).false
if the tag is an end group tag.IOException
void putVarintField(int tag, int value)
tag
- the field tag (containing both field id and wire type).void writeTo(RawProtoStreamWriter output) throws IOException
output
stream.IOException
<A> A consumeTag(int tag)
A
- The expected type of the tag value.tag
- the field tag (containing both field id and wire type).boolean hasTag(int tag)
tag
- the field tag (containing both field id and wire type).Copyright © 2020 JBoss, a division of Red Hat. All rights reserved.