Class ByteArrayBuilder
java.lang.Object
org.opends.server.replication.protocol.ByteArrayBuilder
Byte array builder class encodes data into byte arrays to send messages over the replication protocol. Built on top
of
ByteStringBuilder
, it isolates the latter against legacy type conversions from the replication protocol.
It exposes a fluent API.-
Constructor Summary
ConstructorDescriptionConstructs a ByteArrayBuilder.ByteArrayBuilder
(int capacity) Constructs a ByteArrayBuilder. -
Method Summary
Modifier and TypeMethodDescriptionappendBoolean
(boolean b) Append a boolean to this ByteArrayBuilder.appendByte
(int b) Append a byte to this ByteArrayBuilder.appendByteArray
(byte[] bytes) Append all the bytes from the byte array to this ByteArrayBuilder.appendCsn
(CSN csn, CSN.CsnVersion version) Append a CSN to this ByteArrayBuilder.appendCsnUtf8
(CSN csn, CSN.CsnVersion version) Append a CSN to this ByteArrayBuilder by converting it to a String then encoding that string to a UTF-8 byte array.Append a DN to this ByteArrayBuilder by converting it to a String then encoding that string to a UTF-8 byte array.appendGroupId
(com.forgerock.opendj.discovery.GroupId groupId) Appends the encoded version of aGroupId
to this ByteArrayBuilder.appendInt
(int i) Append an int to this ByteArrayBuilder.appendIntUtf8
(int i) Append an int to this ByteArrayBuilder by converting it to a String then encoding that string to a UTF-8 byte array.appendLong
(long l) Append a long to this ByteArrayBuilder.appendLongUtf8
(long l) Append a long to this ByteArrayBuilder by converting it to a String then encoding that string to a UTF-8 byte array.Append an RDN to this ByteArrayBuilder by converting it to a String then encoding that string to a UTF-8 byte array.appendReplicaId
(ReplicaId replicaId) Appends the encoded version of thisReplicaId
to this ByteArrayBuilder.appendReplicationServerId
(ReplicationServerId replicationServerId) Appends the encoded version of thisReplicationServerId
to this ByteArrayBuilder.appendServerId
(ServerId<?> serverId) Appends a server id.appendServerStateMustComeLast
(ServerState serverState) Append the byte representation of a ServerState to this ByteArrayBuilder and then append a final zero byte separator.appendShort
(int s) Append a short to this ByteArrayBuilder.Append a String with a zero separator to this ByteArrayBuilder, or only the zero separator if the string is null or if the string length is zero.appendStrings
(Collection<String> col) Append a Collection of Strings to this ByteArrayBuilder.appendUUID
(UUID uuid) Append an UUID with a zero separator to this ByteArrayBuilder, or only the zero separator if the UUID isnull
.appendZeroTerminatedByteArray
(byte[] bytes) Append all the bytes from the byte array to this ByteArrayBuilder and then append a final zero byte separator for compatibility with legacy implementations.static int
bytes
(int nbFields) Helper method that returns the number of bytes that would be used by the byte fields when appended to a ByteArrayBuilder.static int
csnsV1
(int nbFields) Helper method that returns the number of bytes that would be used by the CSN fields when appended to a ByteArrayBuilder.static int
shorts
(int nbFields) Helper method that returns the number of bytes that would be used by the short fields when appended to a ByteArrayBuilder.byte[]
Converts the content of this ByteStringBuilder to a byte array.toString()
-
Constructor Details
-
ByteArrayBuilder
public ByteArrayBuilder()Constructs a ByteArrayBuilder. -
ByteArrayBuilder
public ByteArrayBuilder(int capacity) Constructs a ByteArrayBuilder.- Parameters:
capacity
- the capacity of the underlying ByteStringBuilder
-
-
Method Details
-
appendBoolean
Append a boolean to this ByteArrayBuilder.- Parameters:
b
- the boolean to append.- Returns:
- this ByteArrayBuilder
-
appendByte
Append a byte to this ByteArrayBuilder.- Parameters:
b
- the byte to append.- Returns:
- this ByteArrayBuilder
-
appendShort
Append a short to this ByteArrayBuilder.- Parameters:
s
- the short to append.- Returns:
- this ByteArrayBuilder
-
appendInt
Append an int to this ByteArrayBuilder.- Parameters:
i
- the long to append.- Returns:
- this ByteArrayBuilder
-
appendLong
Append a long to this ByteArrayBuilder.- Parameters:
l
- the long to append.- Returns:
- this ByteArrayBuilder
-
appendIntUtf8
Append an int to this ByteArrayBuilder by converting it to a String then encoding that string to a UTF-8 byte array.- Parameters:
i
- the int to append.- Returns:
- this ByteArrayBuilder
-
appendLongUtf8
Append a long to this ByteArrayBuilder by converting it to a String then encoding that string to a UTF-8 byte array.- Parameters:
l
- the long to append.- Returns:
- this ByteArrayBuilder
-
appendStrings
Append a Collection of Strings to this ByteArrayBuilder.- Parameters:
col
- the Collection of Strings to append.- Returns:
- this ByteArrayBuilder
-
appendString
Append a String with a zero separator to this ByteArrayBuilder, or only the zero separator if the string is null or if the string length is zero.- Parameters:
s
- the String to append. Can be null.- Returns:
- this ByteArrayBuilder
-
appendUUID
Append an UUID with a zero separator to this ByteArrayBuilder, or only the zero separator if the UUID isnull
.- Parameters:
uuid
- the UUID to append. Can benull
.- Returns:
- this ByteArrayBuilder
-
appendGroupId
Appends the encoded version of aGroupId
to this ByteArrayBuilder.- Parameters:
groupId
- the group id to append.- Returns:
- this ByteArrayBuilder
-
appendReplicaId
Appends the encoded version of thisReplicaId
to this ByteArrayBuilder.- Parameters:
replicaId
- the replica id to append.- Returns:
- this ByteArrayBuilder
-
appendReplicationServerId
Appends the encoded version of thisReplicationServerId
to this ByteArrayBuilder.- Parameters:
replicationServerId
- the replication server id to append.- Returns:
- this ByteArrayBuilder
-
appendServerId
Appends a server id.- Parameters:
serverId
- theServerId
to append.- Returns:
- this ByteArrayBuilder
-
appendCsn
Append a CSN to this ByteArrayBuilder.- Parameters:
csn
- the CSN to append.version
- the CSN version to use for encoding- Returns:
- this ByteArrayBuilder
-
appendCsnUtf8
Append a CSN to this ByteArrayBuilder by converting it to a String then encoding that string to a UTF-8 byte array.- Parameters:
csn
- the CSN to append.version
- the CSN version to use for encoding.- Returns:
- this ByteArrayBuilder
-
appendDn
Append a DN to this ByteArrayBuilder by converting it to a String then encoding that string to a UTF-8 byte array.- Parameters:
dn
- the DN to append.- Returns:
- this ByteArrayBuilder
-
appendRdn
Append an RDN to this ByteArrayBuilder by converting it to a String then encoding that string to a UTF-8 byte array.- Parameters:
rdn
- the RDN to append.- Returns:
- this ByteArrayBuilder
-
appendByteArray
Append all the bytes from the byte array to this ByteArrayBuilder.- Parameters:
bytes
- the byte array to append.- Returns:
- this ByteArrayBuilder
-
appendZeroTerminatedByteArray
Append all the bytes from the byte array to this ByteArrayBuilder and then append a final zero byte separator for compatibility with legacy implementations.Note: the super long method name it is intentional: nobody will want to use it, which is good because nobody should.
- Parameters:
bytes
- the byte array to append.- Returns:
- this ByteArrayBuilder
-
appendServerStateMustComeLast
Append the byte representation of a ServerState to this ByteArrayBuilder and then append a final zero byte separator.Caution: ServerState MUST be the last field. Because ServerState can contain null character (string termination of replica id string ..) it cannot be decoded using
ByteArrayScanner.nextString()
like the other fields. The only way is to rely on the end of the input buffer: and that forces the ServerState to be the last field. This should be changed if we want to have more than one ServerState field.Note: the super long method name it is intentional: nobody will want to use it, which is good because nobody should.
- Parameters:
serverState
- the ServerState to append.- Returns:
- this ByteArrayBuilder
- See Also:
-
toByteArray
public byte[] toByteArray()Converts the content of this ByteStringBuilder to a byte array.- Returns:
- the content of this ByteStringBuilder converted to a byte array.
-
toString
-
bytes
public static int bytes(int nbFields) Helper method that returns the number of bytes that would be used by the byte fields when appended to a ByteArrayBuilder.- Parameters:
nbFields
- the number of byte fields that will be appended to a ByteArrayBuilder- Returns:
- the number of bytes occupied by the appended byte fields.
-
shorts
public static int shorts(int nbFields) Helper method that returns the number of bytes that would be used by the short fields when appended to a ByteArrayBuilder.- Parameters:
nbFields
- the number of short fields that will be appended to a ByteArrayBuilder- Returns:
- the number of bytes occupied by the appended short fields.
-
csnsV1
public static int csnsV1(int nbFields) Helper method that returns the number of bytes that would be used by the CSN fields when appended to a ByteArrayBuilder.- Parameters:
nbFields
- the number of CSN fields that will be appended to a ByteArrayBuilder- Returns:
- the number of bytes occupied by the appended CSN fields.
-