Package com.google.protobuf
Class BinaryReader.SafeHeapReader
- java.lang.Object
-
- com.google.protobuf.BinaryReader
-
- com.google.protobuf.BinaryReader.SafeHeapReader
-
- All Implemented Interfaces:
Reader
- Enclosing class:
- BinaryReader
private static final class BinaryReader.SafeHeapReader extends BinaryReader
ABinaryReaderimplementation that operates on a heapByteBuffer. Uses only safe operations on the underlying array.
-
-
Field Summary
Fields Modifier and Type Field Description private byte[]bufferprivate booleanbufferIsImmutableprivate intendGroupTagprivate intinitialPosprivate intlimitprivate intposprivate inttag-
Fields inherited from interface com.google.protobuf.Reader
READ_DONE, TAG_UNKNOWN
-
-
Constructor Summary
Constructors Constructor Description SafeHeapReader(java.nio.ByteBuffer bytebuf, boolean bufferIsImmutable)
-
Method Summary
All Methods Instance Methods Concrete Methods Deprecated Methods Modifier and Type Method Description intgetFieldNumber()Gets the field number for the current field being read.intgetTag()Gets the wire tag of the current field.intgetTotalBytesRead()Returns the total number of bytes read so far from the input buffer.private booleanisAtEnd()<T> voidmergeGroupField(T target, Schema<T> schema, ExtensionRegistryLite extensionRegistry)Read a group field from the wire format and merge the results into the given target.<T> voidmergeMessageField(T target, Schema<T> schema, ExtensionRegistryLite extensionRegistry)Read a message field from the wire format and merge the results into the given target.booleanreadBool()Reads and returns the next field of typeBOOLand advances the reader to the next field.voidreadBoolList(java.util.List<java.lang.Boolean> target)Reads the next field of typeBOOL_LISTorBOOL_LIST_PACKEDand advances the reader to the next field.private bytereadByte()ByteStringreadBytes()Reads and returns the next field of typeBYTESand advances the reader to the next field.voidreadBytesList(java.util.List<ByteString> target)Reads the next field of typeBYTES_LISTand advances the reader to the next field.doublereadDouble()Reads and returns the next field of typeDOUBLEand advances the reader to the next field.voidreadDoubleList(java.util.List<java.lang.Double> target)Reads the next field of typeDOUBLE_LISTorDOUBLE_LIST_PACKEDand advances the reader to the next field.intreadEnum()Reads and returns the next field of typeENUMand advances the reader to the next field.voidreadEnumList(java.util.List<java.lang.Integer> target)Reads the next field of typeENUM_LISTorENUM_LIST_PACKEDand advances the reader to the next field.private java.lang.ObjectreadField(WireFormat.FieldType fieldType, java.lang.Class<?> messageType, ExtensionRegistryLite extensionRegistry)intreadFixed32()Reads and returns the next field of typeFIXED32and advances the reader to the next field.voidreadFixed32List(java.util.List<java.lang.Integer> target)Reads the next field of typeFIXED32_LISTorFIXED32_LIST_PACKEDand advances the reader to the next field.longreadFixed64()Reads and returns the next field of typeFIXED64and advances the reader to the next field.voidreadFixed64List(java.util.List<java.lang.Long> target)Reads the next field of typeFIXED64_LISTorFIXED64_LIST_PACKEDand advances the reader to the next field.floatreadFloat()Reads and returns the next field of typeFLOATand advances the reader to the next field.voidreadFloatList(java.util.List<java.lang.Float> target)Reads the next field of typeFLOAT_LISTorFLOAT_LIST_PACKEDand advances the reader to the next field.private <T> TreadGroup(Schema<T> schema, ExtensionRegistryLite extensionRegistry)<T> TreadGroup(java.lang.Class<T> clazz, ExtensionRegistryLite extensionRegistry)Deprecated.<T> TreadGroupBySchemaWithCheck(Schema<T> schema, ExtensionRegistryLite extensionRegistry)Deprecated.<T> voidreadGroupList(java.util.List<T> target, Schema<T> schema, ExtensionRegistryLite extensionRegistry)Deprecated.<T> voidreadGroupList(java.util.List<T> target, java.lang.Class<T> targetType, ExtensionRegistryLite extensionRegistry)Deprecated.intreadInt32()Reads and returns the next field of typeINT32and advances the reader to the next field.voidreadInt32List(java.util.List<java.lang.Integer> target)Reads the next field of typeINT32_LISTorINT32_LIST_PACKEDand advances the reader to the next field.longreadInt64()Reads and returns the next field of typeINT64and advances the reader to the next field.voidreadInt64List(java.util.List<java.lang.Long> target)Reads the next field of typeINT64_LISTorINT64_LIST_PACKEDand advances the reader to the next field.private intreadLittleEndian32()private intreadLittleEndian32_NoCheck()private longreadLittleEndian64()private longreadLittleEndian64_NoCheck()<K,V>
voidreadMap(java.util.Map<K,V> target, MapEntryLite.Metadata<K,V> metadata, ExtensionRegistryLite extensionRegistry)Reads the next field of typeMAPand advances the reader to the next field.private <T> TreadMessage(Schema<T> schema, ExtensionRegistryLite extensionRegistry)<T> TreadMessage(java.lang.Class<T> clazz, ExtensionRegistryLite extensionRegistry)Reads and returns the next field of typeMESSAGEand advances the reader to the next field.<T> TreadMessageBySchemaWithCheck(Schema<T> schema, ExtensionRegistryLite extensionRegistry)<T> voidreadMessageList(java.util.List<T> target, Schema<T> schema, ExtensionRegistryLite extensionRegistry)Reads the next field of typeMESSAGE_LISTand advances the reader to the next field.<T> voidreadMessageList(java.util.List<T> target, java.lang.Class<T> targetType, ExtensionRegistryLite extensionRegistry)intreadSFixed32()Reads and returns the next field of typeSFIXED32and advances the reader to the next field.voidreadSFixed32List(java.util.List<java.lang.Integer> target)Reads the next field of typeSFIXED32_LISTorSFIXED32_LIST_PACKEDand advances the reader to the next field.longreadSFixed64()Reads and returns the next field of typeSFIXED64and advances the reader to the next field.voidreadSFixed64List(java.util.List<java.lang.Long> target)Reads the next field of typeSFIXED64_LISTorSFIXED64_LIST_PACKEDand advances the reader to the next field.intreadSInt32()Reads and returns the next field of typeSINT32and advances the reader to the next field.voidreadSInt32List(java.util.List<java.lang.Integer> target)Reads the next field of typeSINT32_LISTorSINT32_LIST_PACKEDand advances the reader to the next field.longreadSInt64()Reads and returns the next field of typeSINT64and advances the reader to the next field.voidreadSInt64List(java.util.List<java.lang.Long> target)Reads the next field of typeSINT64_LISTorSINT64_LIST_PACKEDand advances the reader to the next field.java.lang.StringreadString()Reads and returns the next field of typeSTRINGand advances the reader to the next field.java.lang.StringreadStringInternal(boolean requireUtf8)voidreadStringList(java.util.List<java.lang.String> target)Reads the next field of typeSTRING_LISTand advances the reader to the next field.voidreadStringListInternal(java.util.List<java.lang.String> target, boolean requireUtf8)voidreadStringListRequireUtf8(java.util.List<java.lang.String> target)Reads the next field of typeSTRING_LISTand advances the reader to the next field.java.lang.StringreadStringRequireUtf8()Reads and returns the next field of typeSTRINGand advances the reader to the next field.intreadUInt32()Reads and returns the next field of typeUINT32and advances the reader to the next field.voidreadUInt32List(java.util.List<java.lang.Integer> target)Reads the next field of typeUINT32_LISTorUINT32_LIST_PACKEDand advances the reader to the next field.longreadUInt64()Reads and returns the next field of typeUINT64and advances the reader to the next field.voidreadUInt64List(java.util.List<java.lang.Long> target)Reads the next field of typeUINT64_LISTorUINT64_LIST_PACKEDand advances the reader to the next field.private intreadVarint32()Read a raw Varint from the stream.longreadVarint64()private longreadVarint64SlowPath()private voidrequireBytes(int size)private voidrequirePosition(int expectedPosition)private voidrequireWireType(int requiredWireType)private voidskipBytes(int size)booleanskipField()Skips the current field and advances the reader to the next field.private voidskipGroup()private voidskipVarint()private voidskipVarintSlowPath()private voidverifyPackedFixed32Length(int bytes)private voidverifyPackedFixed64Length(int bytes)-
Methods inherited from class com.google.protobuf.BinaryReader
newInstance, shouldDiscardUnknownFields
-
-
-
-
Method Detail
-
isAtEnd
private boolean isAtEnd()
-
getTotalBytesRead
public int getTotalBytesRead()
Description copied from class:BinaryReaderReturns the total number of bytes read so far from the input buffer.- Specified by:
getTotalBytesReadin classBinaryReader
-
getFieldNumber
public int getFieldNumber() throws java.io.IOExceptionDescription copied from interface:ReaderGets the field number for the current field being read.TODO: Rename it to make it more explicit about the side effect on the underlying buffer.
- Returns:
- the current field number or
Reader.READ_DONEif the end of input has been reached. - Throws:
java.io.IOException
-
getTag
public int getTag()
Description copied from interface:ReaderGets the wire tag of the current field.- Returns:
- the current wire tag or
Reader.TAG_UNKNOWNif the reader does not know the tag of the current field.
-
skipField
public boolean skipField() throws java.io.IOExceptionDescription copied from interface:ReaderSkips the current field and advances the reader to the next field.- Returns:
trueif there are more fields orfalseif the end of input has been reached.- Throws:
java.io.IOException
-
readDouble
public double readDouble() throws java.io.IOExceptionDescription copied from interface:ReaderReads and returns the next field of typeDOUBLEand advances the reader to the next field.- Throws:
java.io.IOException
-
readFloat
public float readFloat() throws java.io.IOExceptionDescription copied from interface:ReaderReads and returns the next field of typeFLOATand advances the reader to the next field.- Throws:
java.io.IOException
-
readUInt64
public long readUInt64() throws java.io.IOExceptionDescription copied from interface:ReaderReads and returns the next field of typeUINT64and advances the reader to the next field.- Throws:
java.io.IOException
-
readInt64
public long readInt64() throws java.io.IOExceptionDescription copied from interface:ReaderReads and returns the next field of typeINT64and advances the reader to the next field.- Throws:
java.io.IOException
-
readInt32
public int readInt32() throws java.io.IOExceptionDescription copied from interface:ReaderReads and returns the next field of typeINT32and advances the reader to the next field.- Throws:
java.io.IOException
-
readFixed64
public long readFixed64() throws java.io.IOExceptionDescription copied from interface:ReaderReads and returns the next field of typeFIXED64and advances the reader to the next field.- Throws:
java.io.IOException
-
readFixed32
public int readFixed32() throws java.io.IOExceptionDescription copied from interface:ReaderReads and returns the next field of typeFIXED32and advances the reader to the next field.- Throws:
java.io.IOException
-
readBool
public boolean readBool() throws java.io.IOExceptionDescription copied from interface:ReaderReads and returns the next field of typeBOOLand advances the reader to the next field.- Throws:
java.io.IOException
-
readString
public java.lang.String readString() throws java.io.IOExceptionDescription copied from interface:ReaderReads and returns the next field of typeSTRINGand advances the reader to the next field. If the stream contains malformed UTF-8, replace the offending bytes with the standard UTF-8 replacement character.- Throws:
java.io.IOException
-
readStringRequireUtf8
public java.lang.String readStringRequireUtf8() throws java.io.IOExceptionDescription copied from interface:ReaderReads and returns the next field of typeSTRINGand advances the reader to the next field. If the stream contains malformed UTF-8, throw exceptionInvalidProtocolBufferException.- Throws:
java.io.IOException
-
readStringInternal
public java.lang.String readStringInternal(boolean requireUtf8) throws java.io.IOException- Throws:
java.io.IOException
-
readMessage
public <T> T readMessage(java.lang.Class<T> clazz, ExtensionRegistryLite extensionRegistry) throws java.io.IOExceptionDescription copied from interface:ReaderReads and returns the next field of typeMESSAGEand advances the reader to the next field.- Throws:
java.io.IOException
-
readMessageBySchemaWithCheck
public <T> T readMessageBySchemaWithCheck(Schema<T> schema, ExtensionRegistryLite extensionRegistry) throws java.io.IOException
- Throws:
java.io.IOException
-
readMessage
private <T> T readMessage(Schema<T> schema, ExtensionRegistryLite extensionRegistry) throws java.io.IOException
- Throws:
java.io.IOException
-
mergeMessageField
public <T> void mergeMessageField(T target, Schema<T> schema, ExtensionRegistryLite extensionRegistry) throws java.io.IOExceptionDescription copied from interface:ReaderRead a message field from the wire format and merge the results into the given target.- Throws:
java.io.IOException
-
readGroup
@Deprecated public <T> T readGroup(java.lang.Class<T> clazz, ExtensionRegistryLite extensionRegistry) throws java.io.IOExceptionDeprecated.Description copied from interface:ReaderReads and returns the next field of typeGROUPand advances the reader to the next field.- Throws:
java.io.IOException
-
readGroupBySchemaWithCheck
@Deprecated public <T> T readGroupBySchemaWithCheck(Schema<T> schema, ExtensionRegistryLite extensionRegistry) throws java.io.IOException
Deprecated.- Throws:
java.io.IOException
-
readGroup
private <T> T readGroup(Schema<T> schema, ExtensionRegistryLite extensionRegistry) throws java.io.IOException
- Throws:
java.io.IOException
-
mergeGroupField
public <T> void mergeGroupField(T target, Schema<T> schema, ExtensionRegistryLite extensionRegistry) throws java.io.IOExceptionDescription copied from interface:ReaderRead a group field from the wire format and merge the results into the given target.- Throws:
java.io.IOException
-
readBytes
public ByteString readBytes() throws java.io.IOException
Description copied from interface:ReaderReads and returns the next field of typeBYTESand advances the reader to the next field.- Throws:
java.io.IOException
-
readUInt32
public int readUInt32() throws java.io.IOExceptionDescription copied from interface:ReaderReads and returns the next field of typeUINT32and advances the reader to the next field.- Throws:
java.io.IOException
-
readEnum
public int readEnum() throws java.io.IOExceptionDescription copied from interface:ReaderReads and returns the next field of typeENUMand advances the reader to the next field.- Throws:
java.io.IOException
-
readSFixed32
public int readSFixed32() throws java.io.IOExceptionDescription copied from interface:ReaderReads and returns the next field of typeSFIXED32and advances the reader to the next field.- Throws:
java.io.IOException
-
readSFixed64
public long readSFixed64() throws java.io.IOExceptionDescription copied from interface:ReaderReads and returns the next field of typeSFIXED64and advances the reader to the next field.- Throws:
java.io.IOException
-
readSInt32
public int readSInt32() throws java.io.IOExceptionDescription copied from interface:ReaderReads and returns the next field of typeSINT32and advances the reader to the next field.- Throws:
java.io.IOException
-
readSInt64
public long readSInt64() throws java.io.IOExceptionDescription copied from interface:ReaderReads and returns the next field of typeSINT64and advances the reader to the next field.- Throws:
java.io.IOException
-
readDoubleList
public void readDoubleList(java.util.List<java.lang.Double> target) throws java.io.IOExceptionDescription copied from interface:ReaderReads the next field of typeDOUBLE_LISTorDOUBLE_LIST_PACKEDand advances the reader to the next field.- Parameters:
target- the list that will receive the read values.- Throws:
java.io.IOException
-
readFloatList
public void readFloatList(java.util.List<java.lang.Float> target) throws java.io.IOExceptionDescription copied from interface:ReaderReads the next field of typeFLOAT_LISTorFLOAT_LIST_PACKEDand advances the reader to the next field.- Parameters:
target- the list that will receive the read values.- Throws:
java.io.IOException
-
readUInt64List
public void readUInt64List(java.util.List<java.lang.Long> target) throws java.io.IOExceptionDescription copied from interface:ReaderReads the next field of typeUINT64_LISTorUINT64_LIST_PACKEDand advances the reader to the next field.- Parameters:
target- the list that will receive the read values.- Throws:
java.io.IOException
-
readInt64List
public void readInt64List(java.util.List<java.lang.Long> target) throws java.io.IOExceptionDescription copied from interface:ReaderReads the next field of typeINT64_LISTorINT64_LIST_PACKEDand advances the reader to the next field.- Parameters:
target- the list that will receive the read values.- Throws:
java.io.IOException
-
readInt32List
public void readInt32List(java.util.List<java.lang.Integer> target) throws java.io.IOExceptionDescription copied from interface:ReaderReads the next field of typeINT32_LISTorINT32_LIST_PACKEDand advances the reader to the next field.- Parameters:
target- the list that will receive the read values.- Throws:
java.io.IOException
-
readFixed64List
public void readFixed64List(java.util.List<java.lang.Long> target) throws java.io.IOExceptionDescription copied from interface:ReaderReads the next field of typeFIXED64_LISTorFIXED64_LIST_PACKEDand advances the reader to the next field.- Parameters:
target- the list that will receive the read values.- Throws:
java.io.IOException
-
readFixed32List
public void readFixed32List(java.util.List<java.lang.Integer> target) throws java.io.IOExceptionDescription copied from interface:ReaderReads the next field of typeFIXED32_LISTorFIXED32_LIST_PACKEDand advances the reader to the next field.- Parameters:
target- the list that will receive the read values.- Throws:
java.io.IOException
-
readBoolList
public void readBoolList(java.util.List<java.lang.Boolean> target) throws java.io.IOExceptionDescription copied from interface:ReaderReads the next field of typeBOOL_LISTorBOOL_LIST_PACKEDand advances the reader to the next field.- Parameters:
target- the list that will receive the read values.- Throws:
java.io.IOException
-
readStringList
public void readStringList(java.util.List<java.lang.String> target) throws java.io.IOExceptionDescription copied from interface:ReaderReads the next field of typeSTRING_LISTand advances the reader to the next field.- Parameters:
target- the list that will receive the read values.- Throws:
java.io.IOException
-
readStringListRequireUtf8
public void readStringListRequireUtf8(java.util.List<java.lang.String> target) throws java.io.IOExceptionDescription copied from interface:ReaderReads the next field of typeSTRING_LISTand advances the reader to the next field. If the stream contains malformed UTF-8, throw exceptionInvalidProtocolBufferException.- Parameters:
target- the list that will receive the read values.- Throws:
java.io.IOException
-
readStringListInternal
public void readStringListInternal(java.util.List<java.lang.String> target, boolean requireUtf8) throws java.io.IOException- Throws:
java.io.IOException
-
readMessageList
public <T> void readMessageList(java.util.List<T> target, java.lang.Class<T> targetType, ExtensionRegistryLite extensionRegistry) throws java.io.IOException- Throws:
java.io.IOException
-
readMessageList
public <T> void readMessageList(java.util.List<T> target, Schema<T> schema, ExtensionRegistryLite extensionRegistry) throws java.io.IOExceptionDescription copied from interface:ReaderReads the next field of typeMESSAGE_LISTand advances the reader to the next field.- Parameters:
target- the list that will receive the read values.- Throws:
java.io.IOException
-
readGroupList
@Deprecated public <T> void readGroupList(java.util.List<T> target, java.lang.Class<T> targetType, ExtensionRegistryLite extensionRegistry) throws java.io.IOExceptionDeprecated.Description copied from interface:ReaderReads the next field of typeGROUP_LISTand advances the reader to the next field.- Parameters:
target- the list that will receive the read values.targetType- the type of the elements stored in thetargetlist.- Throws:
java.io.IOException
-
readGroupList
@Deprecated public <T> void readGroupList(java.util.List<T> target, Schema<T> schema, ExtensionRegistryLite extensionRegistry) throws java.io.IOExceptionDeprecated.- Throws:
java.io.IOException
-
readBytesList
public void readBytesList(java.util.List<ByteString> target) throws java.io.IOException
Description copied from interface:ReaderReads the next field of typeBYTES_LISTand advances the reader to the next field.- Parameters:
target- the list that will receive the read values.- Throws:
java.io.IOException
-
readUInt32List
public void readUInt32List(java.util.List<java.lang.Integer> target) throws java.io.IOExceptionDescription copied from interface:ReaderReads the next field of typeUINT32_LISTorUINT32_LIST_PACKEDand advances the reader to the next field.- Parameters:
target- the list that will receive the read values.- Throws:
java.io.IOException
-
readEnumList
public void readEnumList(java.util.List<java.lang.Integer> target) throws java.io.IOExceptionDescription copied from interface:ReaderReads the next field of typeENUM_LISTorENUM_LIST_PACKEDand advances the reader to the next field.- Parameters:
target- the list that will receive the read values.- Throws:
java.io.IOException
-
readSFixed32List
public void readSFixed32List(java.util.List<java.lang.Integer> target) throws java.io.IOExceptionDescription copied from interface:ReaderReads the next field of typeSFIXED32_LISTorSFIXED32_LIST_PACKEDand advances the reader to the next field.- Parameters:
target- the list that will receive the read values.- Throws:
java.io.IOException
-
readSFixed64List
public void readSFixed64List(java.util.List<java.lang.Long> target) throws java.io.IOExceptionDescription copied from interface:ReaderReads the next field of typeSFIXED64_LISTorSFIXED64_LIST_PACKEDand advances the reader to the next field.- Parameters:
target- the list that will receive the read values.- Throws:
java.io.IOException
-
readSInt32List
public void readSInt32List(java.util.List<java.lang.Integer> target) throws java.io.IOExceptionDescription copied from interface:ReaderReads the next field of typeSINT32_LISTorSINT32_LIST_PACKEDand advances the reader to the next field.- Parameters:
target- the list that will receive the read values.- Throws:
java.io.IOException
-
readSInt64List
public void readSInt64List(java.util.List<java.lang.Long> target) throws java.io.IOExceptionDescription copied from interface:ReaderReads the next field of typeSINT64_LISTorSINT64_LIST_PACKEDand advances the reader to the next field.- Parameters:
target- the list that will receive the read values.- Throws:
java.io.IOException
-
readMap
public <K,V> void readMap(java.util.Map<K,V> target, MapEntryLite.Metadata<K,V> metadata, ExtensionRegistryLite extensionRegistry) throws java.io.IOExceptionDescription copied from interface:ReaderReads the next field of typeMAPand advances the reader to the next field.- Parameters:
target- the mutable map that will receive the read values.metadata- the default entry of the map field.extensionRegistry- the extension registry for parsing message value fields.- Throws:
java.io.IOException
-
readField
private java.lang.Object readField(WireFormat.FieldType fieldType, java.lang.Class<?> messageType, ExtensionRegistryLite extensionRegistry) throws java.io.IOException
- Throws:
java.io.IOException
-
readVarint32
private int readVarint32() throws java.io.IOExceptionRead a raw Varint from the stream. If larger than 32 bits, discard the upper bits.- Throws:
java.io.IOException
-
readVarint64
public long readVarint64() throws java.io.IOException- Throws:
java.io.IOException
-
readVarint64SlowPath
private long readVarint64SlowPath() throws java.io.IOException- Throws:
java.io.IOException
-
readByte
private byte readByte() throws java.io.IOException- Throws:
java.io.IOException
-
readLittleEndian32
private int readLittleEndian32() throws java.io.IOException- Throws:
java.io.IOException
-
readLittleEndian64
private long readLittleEndian64() throws java.io.IOException- Throws:
java.io.IOException
-
readLittleEndian32_NoCheck
private int readLittleEndian32_NoCheck()
-
readLittleEndian64_NoCheck
private long readLittleEndian64_NoCheck()
-
skipVarint
private void skipVarint() throws java.io.IOException- Throws:
java.io.IOException
-
skipVarintSlowPath
private void skipVarintSlowPath() throws java.io.IOException- Throws:
java.io.IOException
-
skipBytes
private void skipBytes(int size) throws java.io.IOException- Throws:
java.io.IOException
-
skipGroup
private void skipGroup() throws java.io.IOException- Throws:
java.io.IOException
-
requireBytes
private void requireBytes(int size) throws java.io.IOException- Throws:
java.io.IOException
-
requireWireType
private void requireWireType(int requiredWireType) throws java.io.IOException- Throws:
java.io.IOException
-
verifyPackedFixed64Length
private void verifyPackedFixed64Length(int bytes) throws java.io.IOException- Throws:
java.io.IOException
-
verifyPackedFixed32Length
private void verifyPackedFixed32Length(int bytes) throws java.io.IOException- Throws:
java.io.IOException
-
requirePosition
private void requirePosition(int expectedPosition) throws java.io.IOException- Throws:
java.io.IOException
-
-