Package com.google.protobuf
Class ArrayDecoders
java.lang.Object
com.google.protobuf.ArrayDecoders
Helper functions to decode protobuf wire format from a byte array.
Note that these functions don't do boundary check on the byte array but instead rely on Java VM to check it. That means parsing routines utilizing these functions must catch IndexOutOfBoundsException and convert it to protobuf's InvalidProtocolBufferException when crossing protobuf public API boundaries.
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescription(package private) static final class
A helper used to return multiple values in a Java function. -
Field Summary
FieldsModifier and TypeFieldDescription(package private) static final int
private static int
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionprivate static void
checkRecursionLimit
(int depth) (package private) static int
decodeBoolList
(int tag, byte[] data, int position, int limit, Internal.ProtobufList<?> list, ArrayDecoders.Registers registers) Decodes a repeated boolean field.(package private) static int
decodeBytes
(byte[] data, int position, ArrayDecoders.Registers registers) Decodes a bytes value.(package private) static int
decodeBytesList
(int tag, byte[] data, int position, int limit, Internal.ProtobufList<?> list, ArrayDecoders.Registers registers) Decodes a repeated bytes field.(package private) static double
decodeDouble
(byte[] data, int position) Decodes and returns a double value.(package private) static int
decodeDoubleList
(int tag, byte[] data, int position, int limit, Internal.ProtobufList<?> list, ArrayDecoders.Registers registers) Decodes a repeated double field.(package private) static int
decodeExtension
(int tag, byte[] data, int position, int limit, GeneratedMessageLite.ExtendableMessage<?, ?> message, GeneratedMessageLite.GeneratedExtension<?, ?> extension, UnknownFieldSchema<UnknownFieldSetLite, UnknownFieldSetLite> unknownFieldSchema, ArrayDecoders.Registers registers) (package private) static int
decodeExtensionOrUnknownField
(int tag, byte[] data, int position, int limit, Object message, MessageLite defaultInstance, UnknownFieldSchema<UnknownFieldSetLite, UnknownFieldSetLite> unknownFieldSchema, ArrayDecoders.Registers registers) (package private) static int
decodeFixed32
(byte[] data, int position) Decodes and returns a fixed32 value.(package private) static int
decodeFixed32List
(int tag, byte[] data, int position, int limit, Internal.ProtobufList<?> list, ArrayDecoders.Registers registers) Decodes a repeated fixed32 field.(package private) static long
decodeFixed64
(byte[] data, int position) Decodes and returns a fixed64 value.(package private) static int
decodeFixed64List
(int tag, byte[] data, int position, int limit, Internal.ProtobufList<?> list, ArrayDecoders.Registers registers) Decodes a repeated fixed64 field.(package private) static float
decodeFloat
(byte[] data, int position) Decodes and returns a float value.(package private) static int
decodeFloatList
(int tag, byte[] data, int position, int limit, Internal.ProtobufList<?> list, ArrayDecoders.Registers registers) Decodes a repeated float field.(package private) static int
decodeGroupField
(Schema schema, byte[] data, int position, int limit, int endGroup, ArrayDecoders.Registers registers) Decodes a group value.(package private) static int
decodeGroupList
(Schema schema, int tag, byte[] data, int position, int limit, Internal.ProtobufList<?> list, ArrayDecoders.Registers registers) Decodes a repeated group field(package private) static int
decodeMessageField
(Schema schema, byte[] data, int position, int limit, ArrayDecoders.Registers registers) Decodes a message value.(package private) static int
decodeMessageList
(Schema<?> schema, int tag, byte[] data, int position, int limit, Internal.ProtobufList<?> list, ArrayDecoders.Registers registers) Decodes a repeated message field(package private) static int
decodePackedBoolList
(byte[] data, int position, Internal.ProtobufList<?> list, ArrayDecoders.Registers registers) Decodes a packed boolean field.(package private) static int
decodePackedDoubleList
(byte[] data, int position, Internal.ProtobufList<?> list, ArrayDecoders.Registers registers) Decodes a packed double field.(package private) static int
decodePackedFixed32List
(byte[] data, int position, Internal.ProtobufList<?> list, ArrayDecoders.Registers registers) Decodes a packed fixed32 field.(package private) static int
decodePackedFixed64List
(byte[] data, int position, Internal.ProtobufList<?> list, ArrayDecoders.Registers registers) Decodes a packed fixed64 field.(package private) static int
decodePackedFloatList
(byte[] data, int position, Internal.ProtobufList<?> list, ArrayDecoders.Registers registers) Decodes a packed float field.(package private) static int
decodePackedSInt32List
(byte[] data, int position, Internal.ProtobufList<?> list, ArrayDecoders.Registers registers) Decodes a packed sint32 field.(package private) static int
decodePackedSInt64List
(byte[] data, int position, Internal.ProtobufList<?> list, ArrayDecoders.Registers registers) Decodes a packed sint64 field.(package private) static int
decodePackedVarint32List
(byte[] data, int position, Internal.ProtobufList<?> list, ArrayDecoders.Registers registers) Decodes a packed 32-bit varint field.(package private) static int
decodePackedVarint64List
(byte[] data, int position, Internal.ProtobufList<?> list, ArrayDecoders.Registers registers) Decodes a packed 64-bit varint field.(package private) static int
decodeSInt32List
(int tag, byte[] data, int position, int limit, Internal.ProtobufList<?> list, ArrayDecoders.Registers registers) Decodes a repeated sint32 field.(package private) static int
decodeSInt64List
(int tag, byte[] data, int position, int limit, Internal.ProtobufList<?> list, ArrayDecoders.Registers registers) Decodes a repeated sint64 field.(package private) static int
decodeString
(byte[] data, int position, ArrayDecoders.Registers registers) Decodes a string value.(package private) static int
decodeStringList
(int tag, byte[] data, int position, int limit, Internal.ProtobufList<?> list, ArrayDecoders.Registers registers) Decodes a repeated string field.(package private) static int
decodeStringListRequireUtf8
(int tag, byte[] data, int position, int limit, Internal.ProtobufList<?> list, ArrayDecoders.Registers registers) Decodes a repeated string field with utf8 check.(package private) static int
decodeStringRequireUtf8
(byte[] data, int position, ArrayDecoders.Registers registers) Decodes a string value with utf8 check.(package private) static int
decodeUnknownField
(int tag, byte[] data, int position, int limit, UnknownFieldSetLite unknownFields, ArrayDecoders.Registers registers) Decodes an unknown field.(package private) static int
decodeVarint32
(byte[] data, int position, ArrayDecoders.Registers registers) Decodes a varint.(package private) static int
decodeVarint32
(int firstByte, byte[] data, int position, ArrayDecoders.Registers registers) Like decodeVarint32 except that the first byte is already read.(package private) static int
decodeVarint32List
(int tag, byte[] data, int position, int limit, Internal.ProtobufList<?> list, ArrayDecoders.Registers registers) Decodes a repeated 32-bit varint field.(package private) static int
decodeVarint64
(byte[] data, int position, ArrayDecoders.Registers registers) Decodes a varint.(package private) static int
decodeVarint64
(long firstByte, byte[] data, int position, ArrayDecoders.Registers registers) Like decodeVarint64 except that the first byte is already read.(package private) static int
decodeVarint64List
(int tag, byte[] data, int position, int limit, Internal.ProtobufList<?> list, ArrayDecoders.Registers registers) Decodes a repeated 64-bit varint field.(package private) static int
mergeGroupField
(Object msg, Schema schema, byte[] data, int position, int limit, int endGroup, ArrayDecoders.Registers registers) (package private) static int
mergeMessageField
(Object msg, Schema schema, byte[] data, int position, int limit, ArrayDecoders.Registers registers) static void
setRecursionLimit
(int limit) Set the maximum recursion limit that ArrayDecoders will allow.(package private) static int
skipField
(int tag, byte[] data, int position, int limit, ArrayDecoders.Registers registers) Skips an unknown field.
-
Field Details
-
DEFAULT_RECURSION_LIMIT
static final int DEFAULT_RECURSION_LIMIT- See Also:
-
recursionLimit
private static volatile int recursionLimit
-
-
Constructor Details
-
ArrayDecoders
private ArrayDecoders()
-
-
Method Details
-
decodeVarint32
Decodes a varint. Returns the position after the varint. The decoded varint is stored in registers.int1. -
decodeVarint32
static int decodeVarint32(int firstByte, byte[] data, int position, ArrayDecoders.Registers registers) Like decodeVarint32 except that the first byte is already read. -
decodeVarint64
Decodes a varint. Returns the position after the varint. The decoded varint is stored in registers.long1. -
decodeVarint64
static int decodeVarint64(long firstByte, byte[] data, int position, ArrayDecoders.Registers registers) Like decodeVarint64 except that the first byte is already read. -
decodeFixed32
static int decodeFixed32(byte[] data, int position) Decodes and returns a fixed32 value. -
decodeFixed64
static long decodeFixed64(byte[] data, int position) Decodes and returns a fixed64 value. -
decodeDouble
static double decodeDouble(byte[] data, int position) Decodes and returns a double value. -
decodeFloat
static float decodeFloat(byte[] data, int position) Decodes and returns a float value. -
decodeString
static int decodeString(byte[] data, int position, ArrayDecoders.Registers registers) throws InvalidProtocolBufferException Decodes a string value.- Throws:
InvalidProtocolBufferException
-
decodeStringRequireUtf8
static int decodeStringRequireUtf8(byte[] data, int position, ArrayDecoders.Registers registers) throws InvalidProtocolBufferException Decodes a string value with utf8 check.- Throws:
InvalidProtocolBufferException
-
decodeBytes
static int decodeBytes(byte[] data, int position, ArrayDecoders.Registers registers) throws InvalidProtocolBufferException Decodes a bytes value.- Throws:
InvalidProtocolBufferException
-
decodeMessageField
static int decodeMessageField(Schema schema, byte[] data, int position, int limit, ArrayDecoders.Registers registers) throws IOException Decodes a message value.- Throws:
IOException
-
decodeGroupField
static int decodeGroupField(Schema schema, byte[] data, int position, int limit, int endGroup, ArrayDecoders.Registers registers) throws IOException Decodes a group value.- Throws:
IOException
-
mergeMessageField
static int mergeMessageField(Object msg, Schema schema, byte[] data, int position, int limit, ArrayDecoders.Registers registers) throws IOException - Throws:
IOException
-
mergeGroupField
static int mergeGroupField(Object msg, Schema schema, byte[] data, int position, int limit, int endGroup, ArrayDecoders.Registers registers) throws IOException - Throws:
IOException
-
decodeVarint32List
static int decodeVarint32List(int tag, byte[] data, int position, int limit, Internal.ProtobufList<?> list, ArrayDecoders.Registers registers) Decodes a repeated 32-bit varint field. Returns the position after all read values. -
decodeVarint64List
static int decodeVarint64List(int tag, byte[] data, int position, int limit, Internal.ProtobufList<?> list, ArrayDecoders.Registers registers) Decodes a repeated 64-bit varint field. Returns the position after all read values. -
decodeFixed32List
static int decodeFixed32List(int tag, byte[] data, int position, int limit, Internal.ProtobufList<?> list, ArrayDecoders.Registers registers) Decodes a repeated fixed32 field. Returns the position after all read values. -
decodeFixed64List
static int decodeFixed64List(int tag, byte[] data, int position, int limit, Internal.ProtobufList<?> list, ArrayDecoders.Registers registers) Decodes a repeated fixed64 field. Returns the position after all read values. -
decodeFloatList
static int decodeFloatList(int tag, byte[] data, int position, int limit, Internal.ProtobufList<?> list, ArrayDecoders.Registers registers) Decodes a repeated float field. Returns the position after all read values. -
decodeDoubleList
static int decodeDoubleList(int tag, byte[] data, int position, int limit, Internal.ProtobufList<?> list, ArrayDecoders.Registers registers) Decodes a repeated double field. Returns the position after all read values. -
decodeBoolList
static int decodeBoolList(int tag, byte[] data, int position, int limit, Internal.ProtobufList<?> list, ArrayDecoders.Registers registers) Decodes a repeated boolean field. Returns the position after all read values. -
decodeSInt32List
static int decodeSInt32List(int tag, byte[] data, int position, int limit, Internal.ProtobufList<?> list, ArrayDecoders.Registers registers) Decodes a repeated sint32 field. Returns the position after all read values. -
decodeSInt64List
static int decodeSInt64List(int tag, byte[] data, int position, int limit, Internal.ProtobufList<?> list, ArrayDecoders.Registers registers) Decodes a repeated sint64 field. Returns the position after all read values. -
decodePackedVarint32List
static int decodePackedVarint32List(byte[] data, int position, Internal.ProtobufList<?> list, ArrayDecoders.Registers registers) throws IOException Decodes a packed 32-bit varint field. Returns the position after all read values.- Throws:
IOException
-
decodePackedVarint64List
static int decodePackedVarint64List(byte[] data, int position, Internal.ProtobufList<?> list, ArrayDecoders.Registers registers) throws IOException Decodes a packed 64-bit varint field. Returns the position after all read values.- Throws:
IOException
-
decodePackedFixed32List
static int decodePackedFixed32List(byte[] data, int position, Internal.ProtobufList<?> list, ArrayDecoders.Registers registers) throws IOException Decodes a packed fixed32 field. Returns the position after all read values.- Throws:
IOException
-
decodePackedFixed64List
static int decodePackedFixed64List(byte[] data, int position, Internal.ProtobufList<?> list, ArrayDecoders.Registers registers) throws IOException Decodes a packed fixed64 field. Returns the position after all read values.- Throws:
IOException
-
decodePackedFloatList
static int decodePackedFloatList(byte[] data, int position, Internal.ProtobufList<?> list, ArrayDecoders.Registers registers) throws IOException Decodes a packed float field. Returns the position after all read values.- Throws:
IOException
-
decodePackedDoubleList
static int decodePackedDoubleList(byte[] data, int position, Internal.ProtobufList<?> list, ArrayDecoders.Registers registers) throws IOException Decodes a packed double field. Returns the position after all read values.- Throws:
IOException
-
decodePackedBoolList
static int decodePackedBoolList(byte[] data, int position, Internal.ProtobufList<?> list, ArrayDecoders.Registers registers) throws IOException Decodes a packed boolean field. Returns the position after all read values.- Throws:
IOException
-
decodePackedSInt32List
static int decodePackedSInt32List(byte[] data, int position, Internal.ProtobufList<?> list, ArrayDecoders.Registers registers) throws IOException Decodes a packed sint32 field. Returns the position after all read values.- Throws:
IOException
-
decodePackedSInt64List
static int decodePackedSInt64List(byte[] data, int position, Internal.ProtobufList<?> list, ArrayDecoders.Registers registers) throws IOException Decodes a packed sint64 field. Returns the position after all read values.- Throws:
IOException
-
decodeStringList
static int decodeStringList(int tag, byte[] data, int position, int limit, Internal.ProtobufList<?> list, ArrayDecoders.Registers registers) throws InvalidProtocolBufferException Decodes a repeated string field. Returns the position after all read values.- Throws:
InvalidProtocolBufferException
-
decodeStringListRequireUtf8
static int decodeStringListRequireUtf8(int tag, byte[] data, int position, int limit, Internal.ProtobufList<?> list, ArrayDecoders.Registers registers) throws InvalidProtocolBufferException Decodes a repeated string field with utf8 check. Returns the position after all read values.- Throws:
InvalidProtocolBufferException
-
decodeBytesList
static int decodeBytesList(int tag, byte[] data, int position, int limit, Internal.ProtobufList<?> list, ArrayDecoders.Registers registers) throws InvalidProtocolBufferException Decodes a repeated bytes field. Returns the position after all read values.- Throws:
InvalidProtocolBufferException
-
decodeMessageList
static int decodeMessageList(Schema<?> schema, int tag, byte[] data, int position, int limit, Internal.ProtobufList<?> list, ArrayDecoders.Registers registers) throws IOException Decodes a repeated message field- Returns:
- The position of after read all messages
- Throws:
IOException
-
decodeGroupList
static int decodeGroupList(Schema schema, int tag, byte[] data, int position, int limit, Internal.ProtobufList<?> list, ArrayDecoders.Registers registers) throws IOException Decodes a repeated group field- Returns:
- The position of after read all groups
- Throws:
IOException
-
decodeExtensionOrUnknownField
static int decodeExtensionOrUnknownField(int tag, byte[] data, int position, int limit, Object message, MessageLite defaultInstance, UnknownFieldSchema<UnknownFieldSetLite, UnknownFieldSetLite> unknownFieldSchema, ArrayDecoders.Registers registers) throws IOException- Throws:
IOException
-
decodeExtension
static int decodeExtension(int tag, byte[] data, int position, int limit, GeneratedMessageLite.ExtendableMessage<?, ?> message, GeneratedMessageLite.GeneratedExtension<?, throws IOException?> extension, UnknownFieldSchema<UnknownFieldSetLite, UnknownFieldSetLite> unknownFieldSchema, ArrayDecoders.Registers registers) - Throws:
IOException
-
decodeUnknownField
static int decodeUnknownField(int tag, byte[] data, int position, int limit, UnknownFieldSetLite unknownFields, ArrayDecoders.Registers registers) throws InvalidProtocolBufferException Decodes an unknown field.- Throws:
InvalidProtocolBufferException
-
skipField
static int skipField(int tag, byte[] data, int position, int limit, ArrayDecoders.Registers registers) throws InvalidProtocolBufferException Skips an unknown field.- Throws:
InvalidProtocolBufferException
-
setRecursionLimit
public static void setRecursionLimit(int limit) Set the maximum recursion limit that ArrayDecoders will allow. An exception will be thrown if the depth of the message exceeds this limit. -
checkRecursionLimit
- Throws:
InvalidProtocolBufferException
-