Class ByteArrayScanner
java.lang.Object
org.opends.server.replication.protocol.ByteArrayScanner
Byte array scanner class helps decode data from byte arrays received via messages over the replication protocol.
Built on top of
ByteStringReader, it isolates the latter against legacy type conversions from the
replication protocol.-
Constructor Summary
ConstructorsConstructorDescriptionByteArrayScanner(byte[] bytes) Builds a ByteArrayScanner object that will read from the supplied byte array. -
Method Summary
Modifier and TypeMethodDescriptionReturns a new ASN1Reader that will read bytes from this ByteArrayScanner.booleanisEmpty()Returns whether the scanner has more bytes to consume.booleanReads the next boolean.bytenextByte()Reads the next byte.byte[]nextByteArray(int length) Return a new byte array containing the requested number of bytes.nextCsn()Reads the next CSN.Reads the next CSN that was encoded as a UTF8 string.nextDn()Reads the next DN.com.forgerock.opendj.discovery.GroupIdReads the next group id.intnextInt()Reads the next int.intReads the next int that was encoded as a UTF8 string.longnextLong()Reads the next long.longReads the next long that was encoded as a UTF8 string.nextRdn()Reads the next RDN.Reads the next replica id.Reads the next replication server id.ServerId<?>Reads the next replication server id or replica id.Reads the next ServerState.shortReads the next short.Reads the next UTF8-encoded string.<T extends Collection<String>>
TnextStrings(T output) Reads the next UTF8-encoded strings in the provided collection.nextUUID()Reads the next UUID.byte[]Return a new byte array containing all remaining bytes in this ByteArrayScanner.byte[]Return a new byte array containing all remaining bytes in this ByteArrayScanner bar the last one which is a zero terminated byte (compatible with legacy code).voidSkips the next byte and verifies it is effectively the zero separator.toString()
-
Constructor Details
-
ByteArrayScanner
public ByteArrayScanner(byte[] bytes) Builds a ByteArrayScanner object that will read from the supplied byte array.- Parameters:
bytes- the byte array input that will be read from
-
-
Method Details
-
nextBoolean
Reads the next boolean.- Returns:
- the next boolean
- Throws:
DataFormatException- if no more data can be read from the input
-
nextByte
Reads the next byte.- Returns:
- the next byte
- Throws:
DataFormatException- if no more data can be read from the input
-
nextShort
Reads the next short.- Returns:
- the next short
- Throws:
DataFormatException- if no more data can be read from the input
-
nextInt
Reads the next int.- Returns:
- the next int
- Throws:
DataFormatException- if no more data can be read from the input
-
nextLong
Reads the next long.- Returns:
- the next long
- Throws:
DataFormatException- if no more data can be read from the input
-
nextIntUtf8
Reads the next int that was encoded as a UTF8 string.- Returns:
- the next int that was encoded as a UTF8 string.
- Throws:
DataFormatException- if no more data can be read from the input
-
nextLongUtf8
Reads the next long that was encoded as a UTF8 string.- Returns:
- the next long that was encoded as a UTF8 string.
- Throws:
DataFormatException- if no more data can be read from the input
-
nextString
Reads the next UTF8-encoded string.- Returns:
- the next UTF8-encoded string or null if the string length is zero
- Throws:
DataFormatException- if no more data can be read from the input
-
nextUUID
Reads the next UUID.- Returns:
- the next UUID or
nullif there is no UUID - Throws:
DataFormatException- if no more data can be read from the input
-
nextStrings
Reads the next UTF8-encoded strings in the provided collection.- Type Parameters:
T- the collection's concrete type- Parameters:
output- the collection where to add the next UTF8-encoded strings- Returns:
- the provided collection where the next UTF8-encoded strings have been added.
- Throws:
DataFormatException- if no more data can be read from the input
-
nextGroupId
Reads the next group id.- Returns:
- the next group id.
- Throws:
DataFormatException- if group id was incorrectly encoded or no more data can be read from the input
-
nextReplicationServerId
Reads the next replication server id.- Returns:
- the next replication server id.
- Throws:
DataFormatException- if a replication server id is not present or no more data can be read from the input
-
nextServerId
Reads the next replication server id or replica id.- Returns:
- the next
ReplicaIdorReplicationServerId - Throws:
DataFormatException- if a neither a replica id or replication server id is not present, or no more data can be read from the input
-
nextReplicaId
Reads the next replica id.- Returns:
- the next replica id.
- Throws:
DataFormatException- if a replica id is not present or no more data can be read from the input
-
nextCsn
Reads the next CSN.- Returns:
- the next CSN.
- Throws:
DataFormatException- if CSN was incorrectly encoded or no more data can be read from the input
-
nextCsnUtf8
Reads the next CSN that was encoded as a UTF8 string.- Returns:
- the next CSN that was encoded as a UTF8 string.
- Throws:
DataFormatException- if legacy CSN was incorrectly encoded or no more data can be read from the input
-
nextDn
Reads the next DN.- Returns:
- the next DN or
nullif there is no DN. - Throws:
DataFormatException- if DN was incorrectly encoded or no more data can be read from the input
-
nextRdn
Reads the next RDN.- Returns:
- the next RDN or
nullif there is no RDN. - Throws:
DataFormatException- if DN was incorrectly encoded or no more data can be read from the input
-
remainingBytes
public byte[] remainingBytes()Return a new byte array containing all remaining bytes in this ByteArrayScanner.- Returns:
- new byte array containing all remaining bytes
-
remainingBytesZeroTerminated
public byte[] remainingBytesZeroTerminated()Return a new byte array containing all remaining bytes in this ByteArrayScanner bar the last one which is a zero terminated byte (compatible with legacy code).- Returns:
- new byte array containing all remaining bytes bar the last one
-
nextByteArray
public byte[] nextByteArray(int length) Return a new byte array containing the requested number of bytes.- Parameters:
length- the number of bytes to be read and copied to the new byte array.- Returns:
- new byte array containing the requested number of bytes.
-
nextServerStateMustComeLast
Reads the next ServerState.Caution: ServerState MUST be the last field (see
ByteArrayBuilder.appendServerStateMustComeLast(ServerState)javadoc).Note: the super long method name it is intentional: nobody will want to use it, which is good because nobody should.
- Returns:
- the next ServerState.
- Throws:
DataFormatException- if ServerState was incorrectly encoded or no more data can be read from the input- See Also:
-
skipZeroSeparator
Skips the next byte and verifies it is effectively the zero separator.- Throws:
DataFormatException- if the next byte is not the zero separator.
-
getAsn1Reader
Returns a new ASN1Reader that will read bytes from this ByteArrayScanner.- Returns:
- a new ASN1Reader that will read bytes from this ByteArrayScanner.
-
isEmpty
public boolean isEmpty()Returns whether the scanner has more bytes to consume.- Returns:
- true if the scanner has more bytes to consume, false otherwise.
-
toString
-