Package com.google.protobuf
Class ArrayDecoders
- java.lang.Object
-
- com.google.protobuf.ArrayDecoders
-
@CheckReturnValue final class ArrayDecoders extends java.lang.Object
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 Classes Modifier and Type Class Description (package private) static classArrayDecoders.RegistersA helper used to return multiple values in a Java function.
-
Field Summary
Fields Modifier and Type Field Description (package private) static intDEFAULT_RECURSION_LIMITprivate static intrecursionLimit
-
Constructor Summary
Constructors Modifier Constructor Description privateArrayDecoders()
-
Method Summary
All Methods Static Methods Concrete Methods Modifier and Type Method Description private static voidcheckRecursionLimit(int depth)(package private) static intdecodeBoolList(int tag, byte[] data, int position, int limit, Internal.ProtobufList<?> list, ArrayDecoders.Registers registers)Decodes a repeated boolean field.(package private) static intdecodeBytes(byte[] data, int position, ArrayDecoders.Registers registers)Decodes a bytes value.(package private) static intdecodeBytesList(int tag, byte[] data, int position, int limit, Internal.ProtobufList<?> list, ArrayDecoders.Registers registers)Decodes a repeated bytes field.(package private) static doubledecodeDouble(byte[] data, int position)Decodes and returns a double value.(package private) static intdecodeDoubleList(int tag, byte[] data, int position, int limit, Internal.ProtobufList<?> list, ArrayDecoders.Registers registers)Decodes a repeated double field.(package private) static intdecodeExtension(int tag, byte[] data, int position, int limit, GeneratedMessageLite.ExtendableMessage<?,?> message, GeneratedMessageLite.GeneratedExtension<?,?> extension, UnknownFieldSchema<UnknownFieldSetLite,UnknownFieldSetLite> unknownFieldSchema, ArrayDecoders.Registers registers)(package private) static intdecodeExtensionOrUnknownField(int tag, byte[] data, int position, int limit, java.lang.Object message, MessageLite defaultInstance, UnknownFieldSchema<UnknownFieldSetLite,UnknownFieldSetLite> unknownFieldSchema, ArrayDecoders.Registers registers)(package private) static intdecodeFixed32(byte[] data, int position)Decodes and returns a fixed32 value.(package private) static intdecodeFixed32List(int tag, byte[] data, int position, int limit, Internal.ProtobufList<?> list, ArrayDecoders.Registers registers)Decodes a repeated fixed32 field.(package private) static longdecodeFixed64(byte[] data, int position)Decodes and returns a fixed64 value.(package private) static intdecodeFixed64List(int tag, byte[] data, int position, int limit, Internal.ProtobufList<?> list, ArrayDecoders.Registers registers)Decodes a repeated fixed64 field.(package private) static floatdecodeFloat(byte[] data, int position)Decodes and returns a float value.(package private) static intdecodeFloatList(int tag, byte[] data, int position, int limit, Internal.ProtobufList<?> list, ArrayDecoders.Registers registers)Decodes a repeated float field.(package private) static intdecodeGroupField(Schema schema, byte[] data, int position, int limit, int endGroup, ArrayDecoders.Registers registers)Decodes a group value.(package private) static intdecodeGroupList(Schema schema, int tag, byte[] data, int position, int limit, Internal.ProtobufList<?> list, ArrayDecoders.Registers registers)Decodes a repeated group field(package private) static intdecodeMessageField(Schema schema, byte[] data, int position, int limit, ArrayDecoders.Registers registers)Decodes a message value.(package private) static intdecodeMessageList(Schema<?> schema, int tag, byte[] data, int position, int limit, Internal.ProtobufList<?> list, ArrayDecoders.Registers registers)Decodes a repeated message field(package private) static intdecodePackedBoolList(byte[] data, int position, Internal.ProtobufList<?> list, ArrayDecoders.Registers registers)Decodes a packed boolean field.(package private) static intdecodePackedDoubleList(byte[] data, int position, Internal.ProtobufList<?> list, ArrayDecoders.Registers registers)Decodes a packed double field.(package private) static intdecodePackedFixed32List(byte[] data, int position, Internal.ProtobufList<?> list, ArrayDecoders.Registers registers)Decodes a packed fixed32 field.(package private) static intdecodePackedFixed64List(byte[] data, int position, Internal.ProtobufList<?> list, ArrayDecoders.Registers registers)Decodes a packed fixed64 field.(package private) static intdecodePackedFloatList(byte[] data, int position, Internal.ProtobufList<?> list, ArrayDecoders.Registers registers)Decodes a packed float field.(package private) static intdecodePackedSInt32List(byte[] data, int position, Internal.ProtobufList<?> list, ArrayDecoders.Registers registers)Decodes a packed sint32 field.(package private) static intdecodePackedSInt64List(byte[] data, int position, Internal.ProtobufList<?> list, ArrayDecoders.Registers registers)Decodes a packed sint64 field.(package private) static intdecodePackedVarint32List(byte[] data, int position, Internal.ProtobufList<?> list, ArrayDecoders.Registers registers)Decodes a packed 32-bit varint field.(package private) static intdecodePackedVarint64List(byte[] data, int position, Internal.ProtobufList<?> list, ArrayDecoders.Registers registers)Decodes a packed 64-bit varint field.(package private) static intdecodeSInt32List(int tag, byte[] data, int position, int limit, Internal.ProtobufList<?> list, ArrayDecoders.Registers registers)Decodes a repeated sint32 field.(package private) static intdecodeSInt64List(int tag, byte[] data, int position, int limit, Internal.ProtobufList<?> list, ArrayDecoders.Registers registers)Decodes a repeated sint64 field.(package private) static intdecodeString(byte[] data, int position, ArrayDecoders.Registers registers)Decodes a string value.(package private) static intdecodeStringList(int tag, byte[] data, int position, int limit, Internal.ProtobufList<?> list, ArrayDecoders.Registers registers)Decodes a repeated string field.(package private) static intdecodeStringListRequireUtf8(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 intdecodeStringRequireUtf8(byte[] data, int position, ArrayDecoders.Registers registers)Decodes a string value with utf8 check.(package private) static intdecodeUnknownField(int tag, byte[] data, int position, int limit, UnknownFieldSetLite unknownFields, ArrayDecoders.Registers registers)Decodes an unknown field.(package private) static intdecodeVarint32(byte[] data, int position, ArrayDecoders.Registers registers)Decodes a varint.(package private) static intdecodeVarint32(int firstByte, byte[] data, int position, ArrayDecoders.Registers registers)Like decodeVarint32 except that the first byte is already read.(package private) static intdecodeVarint32List(int tag, byte[] data, int position, int limit, Internal.ProtobufList<?> list, ArrayDecoders.Registers registers)Decodes a repeated 32-bit varint field.(package private) static intdecodeVarint64(byte[] data, int position, ArrayDecoders.Registers registers)Decodes a varint.(package private) static intdecodeVarint64(long firstByte, byte[] data, int position, ArrayDecoders.Registers registers)Like decodeVarint64 except that the first byte is already read.(package private) static intdecodeVarint64List(int tag, byte[] data, int position, int limit, Internal.ProtobufList<?> list, ArrayDecoders.Registers registers)Decodes a repeated 64-bit varint field.(package private) static intmergeGroupField(java.lang.Object msg, Schema schema, byte[] data, int position, int limit, int endGroup, ArrayDecoders.Registers registers)(package private) static intmergeMessageField(java.lang.Object msg, Schema schema, byte[] data, int position, int limit, ArrayDecoders.Registers registers)static voidsetRecursionLimit(int limit)Set the maximum recursion limit that ArrayDecoders will allow.(package private) static intskipField(int tag, byte[] data, int position, int limit, ArrayDecoders.Registers registers)Skips an unknown field.
-
-
-
Field Detail
-
DEFAULT_RECURSION_LIMIT
static final int DEFAULT_RECURSION_LIMIT
- See Also:
- Constant Field Values
-
recursionLimit
private static volatile int recursionLimit
-
-
Method Detail
-
decodeVarint32
static int decodeVarint32(byte[] data, int position, ArrayDecoders.Registers registers)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
static int decodeVarint64(byte[] data, int position, ArrayDecoders.Registers registers)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 InvalidProtocolBufferExceptionDecodes a string value.- Throws:
InvalidProtocolBufferException
-
decodeStringRequireUtf8
static int decodeStringRequireUtf8(byte[] data, int position, ArrayDecoders.Registers registers) throws InvalidProtocolBufferExceptionDecodes a string value with utf8 check.- Throws:
InvalidProtocolBufferException
-
decodeBytes
static int decodeBytes(byte[] data, int position, ArrayDecoders.Registers registers) throws InvalidProtocolBufferExceptionDecodes a bytes value.- Throws:
InvalidProtocolBufferException
-
decodeMessageField
static int decodeMessageField(Schema schema, byte[] data, int position, int limit, ArrayDecoders.Registers registers) throws java.io.IOException
Decodes a message value.- Throws:
java.io.IOException
-
decodeGroupField
static int decodeGroupField(Schema schema, byte[] data, int position, int limit, int endGroup, ArrayDecoders.Registers registers) throws java.io.IOException
Decodes a group value.- Throws:
java.io.IOException
-
mergeMessageField
static int mergeMessageField(java.lang.Object msg, Schema schema, byte[] data, int position, int limit, ArrayDecoders.Registers registers) throws java.io.IOException- Throws:
java.io.IOException
-
mergeGroupField
static int mergeGroupField(java.lang.Object msg, Schema schema, byte[] data, int position, int limit, int endGroup, ArrayDecoders.Registers registers) throws java.io.IOException- Throws:
java.io.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 java.io.IOExceptionDecodes a packed 32-bit varint field. Returns the position after all read values.- Throws:
java.io.IOException
-
decodePackedVarint64List
static int decodePackedVarint64List(byte[] data, int position, Internal.ProtobufList<?> list, ArrayDecoders.Registers registers) throws java.io.IOExceptionDecodes a packed 64-bit varint field. Returns the position after all read values.- Throws:
java.io.IOException
-
decodePackedFixed32List
static int decodePackedFixed32List(byte[] data, int position, Internal.ProtobufList<?> list, ArrayDecoders.Registers registers) throws InvalidProtocolBufferExceptionDecodes a packed fixed32 field. Returns the position after all read values.- Throws:
InvalidProtocolBufferException
-
decodePackedFixed64List
static int decodePackedFixed64List(byte[] data, int position, Internal.ProtobufList<?> list, ArrayDecoders.Registers registers) throws InvalidProtocolBufferExceptionDecodes a packed fixed64 field. Returns the position after all read values.- Throws:
InvalidProtocolBufferException
-
decodePackedFloatList
static int decodePackedFloatList(byte[] data, int position, Internal.ProtobufList<?> list, ArrayDecoders.Registers registers) throws InvalidProtocolBufferExceptionDecodes a packed float field. Returns the position after all read values.- Throws:
InvalidProtocolBufferException
-
decodePackedDoubleList
static int decodePackedDoubleList(byte[] data, int position, Internal.ProtobufList<?> list, ArrayDecoders.Registers registers) throws InvalidProtocolBufferExceptionDecodes a packed double field. Returns the position after all read values.- Throws:
InvalidProtocolBufferException
-
decodePackedBoolList
static int decodePackedBoolList(byte[] data, int position, Internal.ProtobufList<?> list, ArrayDecoders.Registers registers) throws InvalidProtocolBufferExceptionDecodes a packed boolean field. Returns the position after all read values.- Throws:
InvalidProtocolBufferException
-
decodePackedSInt32List
static int decodePackedSInt32List(byte[] data, int position, Internal.ProtobufList<?> list, ArrayDecoders.Registers registers) throws InvalidProtocolBufferExceptionDecodes a packed sint32 field. Returns the position after all read values.- Throws:
InvalidProtocolBufferException
-
decodePackedSInt64List
static int decodePackedSInt64List(byte[] data, int position, Internal.ProtobufList<?> list, ArrayDecoders.Registers registers) throws InvalidProtocolBufferExceptionDecodes a packed sint64 field. Returns the position after all read values.- Throws:
InvalidProtocolBufferException
-
decodeStringList
static int decodeStringList(int tag, byte[] data, int position, int limit, Internal.ProtobufList<?> list, ArrayDecoders.Registers registers) throws InvalidProtocolBufferExceptionDecodes 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 InvalidProtocolBufferExceptionDecodes 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 InvalidProtocolBufferExceptionDecodes 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 java.io.IOException
Decodes a repeated message field- Returns:
- The position of after read all messages
- Throws:
java.io.IOException
-
decodeGroupList
static int decodeGroupList(Schema schema, int tag, byte[] data, int position, int limit, Internal.ProtobufList<?> list, ArrayDecoders.Registers registers) throws java.io.IOException
Decodes a repeated group field- Returns:
- The position of after read all groups
- Throws:
java.io.IOException
-
decodeExtensionOrUnknownField
static int decodeExtensionOrUnknownField(int tag, byte[] data, int position, int limit, java.lang.Object message, MessageLite defaultInstance, UnknownFieldSchema<UnknownFieldSetLite,UnknownFieldSetLite> unknownFieldSchema, ArrayDecoders.Registers registers) throws java.io.IOException- Throws:
java.io.IOException
-
decodeExtension
static int decodeExtension(int tag, byte[] data, int position, int limit, GeneratedMessageLite.ExtendableMessage<?,?> message, GeneratedMessageLite.GeneratedExtension<?,?> extension, UnknownFieldSchema<UnknownFieldSetLite,UnknownFieldSetLite> unknownFieldSchema, ArrayDecoders.Registers registers) throws java.io.IOException- Throws:
java.io.IOException
-
decodeUnknownField
static int decodeUnknownField(int tag, byte[] data, int position, int limit, UnknownFieldSetLite unknownFields, ArrayDecoders.Registers registers) throws InvalidProtocolBufferExceptionDecodes an unknown field.- Throws:
InvalidProtocolBufferException
-
skipField
static int skipField(int tag, byte[] data, int position, int limit, ArrayDecoders.Registers registers) throws InvalidProtocolBufferExceptionSkips 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
private static void checkRecursionLimit(int depth) throws InvalidProtocolBufferException- Throws:
InvalidProtocolBufferException
-
-