Class Netty4ToProtonBufferAdapter
- All Implemented Interfaces:
AutoCloseable
,Comparable<ProtonBuffer>
,ProtonBuffer
,ProtonBufferAccessors
,ProtonBufferComponent
,ProtonBufferComponentAccessor
,Resource<ProtonBuffer>
-
Constructor Summary
ConstructorDescriptionNetty4ToProtonBufferAdapter
(Netty4ProtonBufferAllocator allocator, io.netty.buffer.ByteBuf resource) Creates a newNetty4ToProtonBufferAdapter
which wraps the given NettyByteBuf
. -
Method Summary
Modifier and TypeMethodDescriptionadvanceReadOffset
(int amount) Adjusts the currentProtonBuffer.getReadOffset()
of this buffer by the specifiedlength
.advanceWriteOffset
(int amount) Adjusts the currentProtonBuffer.getWriteOffset()
of this buffer by the specifiedlength
.Creates and returns a newProtonBufferIterator
that iterates from the current read offset and continues until all readable bytes have been traversed.bufferIterator
(int offset, int length) Creates and returns a newProtonBufferIterator
that iterates from the given offset and continues until specified number of bytes has been traversed.bufferReverseIterator
(int offset, int length) Creates and returns a newProtonBufferIterator
that reverse iterates from the given offset and continues until specified number of bytes has been traversed.int
capacity()
compact()
Moves the readable portion of the buffer to the beginning of the underlying buffer storage and possibly makes additional bytes available for writes before a buffer expansion would occur via anProtonBuffer.ensureWritable(int)
call.int
compareTo
(ProtonBuffer buffer) Compares the remaining content of the current buffer with the remaining content of the given buffer, which must not be null.Returns a component access object that can be used to gain access to the constituent buffer components for use in IO operations or other lower level buffer operations that need to work on single compoents.int
Returns the number of constituent buffer components that are contained in this buffer instance which for a non-composite buffer will always be one (namely itself).Converts this buffer instance to a read-only buffer, any write operation that is performed on this buffer following this call will fail.copy
(int index, int length, boolean readOnly) Returns a copy of this buffer's sub-region.void
copyInto
(int offset, byte[] destination, int destOffset, int length) Copies the given number of bytes from this buffer into the specified target byte array starting at the given offset into this buffer.void
copyInto
(int offset, ByteBuffer destination, int destOffset, int length) Copies the given number of bytes from this buffer into the specified targetByteBuffer
starting at the given offset into this buffer.void
copyInto
(int offset, ProtonBuffer destination, int destOffset, int length) Copies the given number of bytes from this buffer into the specified targetProtonBuffer
starting at the given offset into this buffer.ensureWritable
(int size, int minimumGrowth, boolean allowCompaction) Ensures that the requested number of bytes is available for write operations in the current buffer, growing the buffer if needed to meet the requested writable capacity.boolean
fill
(byte value) Assigns the given value to every byte in the buffer without respect for the buffer read or write offsets.first()
Returns the first component that this access object provides which resets the iteration state to the beginning.byte
getByte
(int index) Reads a single byte at the given index and returns it without modification to the target buffer read offset.char
getChar
(int index) Gets a 2-byte char from the specified index, this method will not modify the read or write index.int
getInt
(int index) Gets a int from the specified index, this method will not modify the read or write index.long
getLong
(int index) Gets a long from the specified index, this method will not modify the read or write index.long
Gets the native address of the backing buffer if one exists otherwise returns 0.long
Gets the native address where reads from this buffer component should start.long
Gets the native address where write to this buffer component should start.byte[]
Returns the readable array if one exists or throws an exception.int
int
Returns the readable array if one exists or throws an exception.int
Returns the number of readable bytes in the buffer safely regards of the actual memory backing this component.int
short
getShort
(int index) Gets a short from the specified index, this method will not modify the read or write index.int
getUnsignedByte
(int index) Gets a unsigned byte from the specified index, this method will not modify the read or write index.byte[]
Returns the writable array if one exists or throws an exception.int
int
Returns the writableByteBuffer
if one exists or throws an exception.int
Returns the number of writable bytes in the buffer safely regards of the actual memory backing this component.int
int
hashCode()
boolean
boolean
int
Returns the limit assigned to this buffer if one was set which controls how large the capacity of the buffer can grow implicitly via write calls.implicitGrowthLimit
(int limit) Configures the limit assigned to this buffer if one was set which controls how large the capacity of the buffer can grow implicitly via write calls.int
indexOf
(byte needle, int offset, int length) Starting from the given offset into this buffer, find the next offset (index) in the buffer where the given value is located or-1
if the value is not found by the time the specified number of bytes has been searched.boolean
boolean
isDirect()
boolean
next()
Returns the next component that this access object provides which can be null if either the first method has never been called or the access of components has reached the end of the chain of buffer components that this access object is assigned to.int
Returns the number of readable constituent buffer components that are contained in this buffer instance which for a non-composite buffer will always be zero or one (namely itself).byte
readByte()
Reads one byte from the buffer and advances the read index by one.readBytes
(byte[] destination, int offset, int length) Read from this buffer, into the destination array, the given number of bytes.readBytes
(ByteBuffer destination) Read from this buffer, into the destinationByteBuffer
This updates the read offset of this buffer and also the position of the destinationByteBuffer
.char
readChar()
Reads a character value from the buffer and advances the read index by four.int
readInt()
Reads a integer value from the buffer and advances the read index by four.long
readLong()
Reads a long value from the buffer and advances the read index by eight.short
Reads a short value from the buffer and advances the read index by two.protected void
protected RuntimeException
setByte
(int index, byte value) Sets the byte value at the given write index in this buffer's backing data store.setChar
(int index, char value) Sets the char value at the given write index in this buffer's backing data store.setInt
(int index, int value) Sets the int value at the given write index in this buffer's backing data store.setLong
(int index, long value) Sets the long value at the given write index in this buffer's backing data store.setReadOffset
(int value) Sets the read offset for this buffer.setShort
(int index, short value) Sets the short value at the given write index in this buffer's backing data store.setWriteOffset
(int value) Sets the write offset for this buffer.split
(int splitOffset) Splits this buffer at the given offset.toString()
Returns a String created from the buffer's underlying bytes using the specifiedCharset
for the newly created String.int
transferFrom
(FileChannel channel, long position, int length) Reads a sequence of bytes from the given channel into this buffer.int
transferFrom
(ReadableByteChannel channel, int length) Reads a sequence of bytes from the given channel into this buffer.protected ProtonBuffer
int
transferTo
(WritableByteChannel channel, int length) Read from this buffer and write to the given channel.io.netty.buffer.ByteBuf
unwrap()
Return the underlying buffer object that backs thisProtonBuffer
instance, or self if there is no backing object.io.netty.buffer.ByteBuf
Unwraps the managed NettyByteBuf
and releases it from ownership by thisProtonBuffer
instance.int
Returns the number of writable constituent buffer components that are contained in this buffer instance which for a non-composite buffer will always be zero or one (namely itself).writeByte
(byte value) Writes a single byte to the buffer and advances the write index by one.writeBytes
(byte[] source, int offset, int length) Writes into this buffer, the given number of bytes from the byte array.writeBytes
(ByteBuffer source) Writes into this buffer from the sourceByteBuffer
.writeBytes
(ProtonBuffer source) Writes into this buffer, all the readable bytes from the given buffer.writeChar
(char value) Writes a single character to the buffer and advances the write index by four.writeInt
(int value) Writes a single integer to the buffer and advances the write index by four.writeLong
(long value) Writes a single long to the buffer and advances the write index by eight.writeShort
(short value) Writes a single short to the buffer and advances the write index by two.Methods inherited from class org.apache.qpid.protonj2.resource.SharedResource
acquire, close, isClosed, isShared, transfer
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
Methods inherited from interface org.apache.qpid.protonj2.buffer.ProtonBuffer
bufferReverseIterator, clear, close, copy, copy, copy, ensureWritable, indexOf, isClosed, isReadable, isWritable, readCharSequence, readSplit, split, writeBytes, writeCharSequence, writeSplit
Methods inherited from interface org.apache.qpid.protonj2.buffer.ProtonBufferAccessors
getBoolean, getDouble, getFloat, getUnsignedInt, getUnsignedShort, readBoolean, readDouble, readFloat, readUnsignedByte, readUnsignedInt, readUnsignedShort, setBoolean, setDouble, setFloat, setUnsignedByte, setUnsignedInt, setUnsignedShort, writeBoolean, writeDouble, writeFloat, writeUnsignedByte, writeUnsignedInt, writeUnsignedShort
Methods inherited from interface org.apache.qpid.protonj2.buffer.ProtonBufferComponentAccessor
close, componentIterator, components, firstReadable, firstWritable, nextReadable, nextWritable, readableComponentIterator, readableComponents, writableComponentIterator, writableComponents
-
Constructor Details
-
Netty4ToProtonBufferAdapter
public Netty4ToProtonBufferAdapter(Netty4ProtonBufferAllocator allocator, io.netty.buffer.ByteBuf resource) Creates a newNetty4ToProtonBufferAdapter
which wraps the given NettyByteBuf
.- Parameters:
allocator
- TheProtonBufferAllocator
that created this instanceresource
- TheByteBuf
resource to wrap.
-
-
Method Details
-
allocator
-
unwrapAndRelease
public io.netty.buffer.ByteBuf unwrapAndRelease()Unwraps the managed NettyByteBuf
and releases it from ownership by thisProtonBuffer
instance. This effectively closes theProtonBuffer
while also safely handing off the managed Netty resource.- Returns:
- the managed Netty
ByteBuf
-
unwrap
public io.netty.buffer.ByteBuf unwrap()Description copied from interface:ProtonBuffer
Return the underlying buffer object that backs thisProtonBuffer
instance, or self if there is no backing object. This method should be overridden in buffer abstraction when access to the underlying backing store is needed such as when wrapping pooled resources that need explicit release calls.- Specified by:
unwrap
in interfaceProtonBuffer
- Specified by:
unwrap
in interfaceProtonBufferComponent
- Returns:
- an underlying buffer object or other backing store for this buffer.
-
isComposite
public boolean isComposite()- Specified by:
isComposite
in interfaceProtonBuffer
- Returns:
- true if the buffer is backed by one or more
ProtonBuffer
instances.
-
componentCount
public int componentCount()Description copied from interface:ProtonBuffer
Returns the number of constituent buffer components that are contained in this buffer instance which for a non-composite buffer will always be one (namely itself). For a composite buffer this count is the total count of all buffers mapped to the composite.- Specified by:
componentCount
in interfaceProtonBuffer
- Returns:
- the number of buffers managed by this
ProtonBuffer
instance.
-
readableComponentCount
public int readableComponentCount()Description copied from interface:ProtonBuffer
Returns the number of readable constituent buffer components that are contained in this buffer instance which for a non-composite buffer will always be zero or one (namely itself). For a composite buffer this count is the total count of all buffers mapped to the composite which are readable.- Specified by:
readableComponentCount
in interfaceProtonBuffer
- Returns:
- the number of readable buffers managed by this
ProtonBuffer
instance.
-
writableComponentCount
public int writableComponentCount()Description copied from interface:ProtonBuffer
Returns the number of writable constituent buffer components that are contained in this buffer instance which for a non-composite buffer will always be zero or one (namely itself). For a composite buffer this count is the total count of all buffers mapped to the composite which are writable.- Specified by:
writableComponentCount
in interfaceProtonBuffer
- Returns:
- the number of writable buffer components managed by this
ProtonBuffer
instance.
-
isReadOnly
public boolean isReadOnly()- Specified by:
isReadOnly
in interfaceProtonBuffer
- Returns:
- whether this buffer instance is read-only or not.
-
isDirect
public boolean isDirect()- Specified by:
isDirect
in interfaceProtonBuffer
- Returns:
- true if the buffer is backed by native memory.
-
convertToReadOnly
Description copied from interface:ProtonBuffer
Converts this buffer instance to a read-only buffer, any write operation that is performed on this buffer following this call will fail. A buffer cannot be made writable after this call.- Specified by:
convertToReadOnly
in interfaceProtonBuffer
- Returns:
- this buffer for use in chaining.
-
getReadOffset
public int getReadOffset()- Specified by:
getReadOffset
in interfaceProtonBuffer
- Returns:
- the current value of the read offset for this buffer.
-
setReadOffset
Description copied from interface:ProtonBuffer
Sets the read offset for this buffer.- Specified by:
setReadOffset
in interfaceProtonBuffer
- Parameters:
value
- The offset into the buffer where the read offset should be positioned.- Returns:
- this buffer for use in chaining.
-
getReadableBytes
public int getReadableBytes()Description copied from interface:ProtonBufferComponent
Returns the number of readable bytes in the buffer safely regards of the actual memory backing this component.- Specified by:
getReadableBytes
in interfaceProtonBuffer
- Specified by:
getReadableBytes
in interfaceProtonBufferComponent
- Returns:
- the number of bytes available for reading from this buffer.
-
getWriteOffset
public int getWriteOffset()- Specified by:
getWriteOffset
in interfaceProtonBuffer
- Returns:
- the current value of the write offset for this buffer.
-
setWriteOffset
Description copied from interface:ProtonBuffer
Sets the write offset for this buffer.- Specified by:
setWriteOffset
in interfaceProtonBuffer
- Parameters:
value
- The offset into the buffer where the write offset should be positioned.- Returns:
- this buffer for use in chaining.
-
getWritableBytes
public int getWritableBytes()Description copied from interface:ProtonBufferComponent
Returns the number of writable bytes in the buffer safely regards of the actual memory backing this component.- Specified by:
getWritableBytes
in interfaceProtonBuffer
- Specified by:
getWritableBytes
in interfaceProtonBufferComponent
- Returns:
- the number of bytes that can be written to this buffer before the limit is hit.
-
capacity
public int capacity()- Specified by:
capacity
in interfaceProtonBuffer
- Returns:
- the number of bytes this buffer can currently contain.
-
implicitGrowthLimit
public int implicitGrowthLimit()Description copied from interface:ProtonBuffer
Returns the limit assigned to this buffer if one was set which controls how large the capacity of the buffer can grow implicitly via write calls. Once the limit is hit any write call that requires more capacity than is currently available will throw an exception instead of allocating more space.When a capacity limit is hit the buffer can still be enlarged but must be done explicitly via the ensure writable APIs.
- Specified by:
implicitGrowthLimit
in interfaceProtonBuffer
- Returns:
- the number of bytes this buffer can currently grow to..
-
implicitGrowthLimit
Description copied from interface:ProtonBuffer
Configures the limit assigned to this buffer if one was set which controls how large the capacity of the buffer can grow implicitly via write calls. Once the limit is hit any write call that requires more capacity than is currently available will throw an exception instead of allocating more space.When a capacity limit is hit the buffer can still be enlarged but must be done explicitly via the ensure writable APIs.
The growth limit set applies only to this buffer instance and is not carried over to a copied buffer of the split buffer created from any of the buffer split calls.
- Specified by:
implicitGrowthLimit
in interfaceProtonBuffer
- Parameters:
limit
- The limit to assign as the maximum capacity this buffer can grow- Returns:
- this buffer for using in call chaining.
-
fill
Description copied from interface:ProtonBuffer
Assigns the given value to every byte in the buffer without respect for the buffer read or write offsets.- Specified by:
fill
in interfaceProtonBuffer
- Parameters:
value
- The byte value to assign each byte in this buffer.- Returns:
- this ProtonBuffer for chaining.
-
compact
Description copied from interface:ProtonBuffer
Moves the readable portion of the buffer to the beginning of the underlying buffer storage and possibly makes additional bytes available for writes before a buffer expansion would occur via anProtonBuffer.ensureWritable(int)
call.- Specified by:
compact
in interfaceProtonBuffer
- Returns:
- this buffer for using in call chaining.
-
copyInto
public void copyInto(int offset, byte[] destination, int destOffset, int length) Description copied from interface:ProtonBuffer
Copies the given number of bytes from this buffer into the specified target byte array starting at the given offset into this buffer. The copied region is written into the target starting at the given offset and continues for the specified length of elements.- Specified by:
copyInto
in interfaceProtonBuffer
- Parameters:
offset
- The offset into this buffer where the copy begins from.destination
- The destination byte array where the copied bytes are written.destOffset
- The offset into the destination to begin writing the copied bytes.length
- The number of bytes to copy into the destination.
-
copyInto
Description copied from interface:ProtonBuffer
Copies the given number of bytes from this buffer into the specified targetByteBuffer
starting at the given offset into this buffer. The copied region is written into the target starting at the given offset and continues for the specified length of elements.- Specified by:
copyInto
in interfaceProtonBuffer
- Parameters:
offset
- The offset into this buffer where the copy begins from.destination
- The destinationByteBuffer
where the copied bytes are written.destOffset
- The offset into the destination to begin writing the copied bytes.length
- The number of bytes to copy into the destination.
-
copyInto
Description copied from interface:ProtonBuffer
Copies the given number of bytes from this buffer into the specified targetProtonBuffer
starting at the given offset into this buffer. The copied region is written into the target starting at the given offset and continues for the specified length of elements.- Specified by:
copyInto
in interfaceProtonBuffer
- Parameters:
offset
- The offset into this buffer where the copy begins from.destination
- The destinationProtonBuffer
where the copied bytes are written.destOffset
- The offset into the destination to begin writing the copied bytes.length
- The number of bytes to copy into the destination.
-
writeBytes
Description copied from interface:ProtonBuffer
Writes into this buffer, the given number of bytes from the byte array. This updates the ProtonBuffer.getWriteOffset() of this buffer by the length argument. Implementations are recommended to specialize this method and provide a more efficient version.- Specified by:
writeBytes
in interfaceProtonBuffer
- Parameters:
source
- The byte array to read from.offset
- The position in thesource
from where bytes should be written to this buffer.length
- The number of bytes to copy.- Returns:
- this buffer for using in call chaining.
-
writeBytes
Description copied from interface:ProtonBuffer
Writes into this buffer from the sourceByteBuffer
. This updates theProtonBuffer.getWriteOffset()
of this buffer and also the position of the sourceByteBuffer
. Implementations are recommended to specialize this method and provide a more efficient version.Note: the behavior is undefined if the given
ByteBuffer
is an alias for the memory in this buffer.- Specified by:
writeBytes
in interfaceProtonBuffer
- Parameters:
source
- TheByteBuffer
to read from.- Returns:
- this buffer for using in call chaining.
-
writeBytes
Description copied from interface:ProtonBuffer
Writes into this buffer, all the readable bytes from the given buffer. This updates theProtonBuffer.getWriteOffset()
of this buffer, and theProtonBuffer.getReadOffset()
of the given buffer.- Specified by:
writeBytes
in interfaceProtonBuffer
- Parameters:
source
- The buffer to read from.- Returns:
- This buffer.
-
readBytes
Description copied from interface:ProtonBuffer
Read from this buffer, into the destinationByteBuffer
This updates the read offset of this buffer and also the position of the destinationByteBuffer
.Note: the behavior is undefined if the given
ByteBuffer
is an alias for the memory in this buffer.- Specified by:
readBytes
in interfaceProtonBuffer
- Parameters:
destination
- TheByteBuffer
to write into.- Returns:
- this buffer for using in call chaining.
-
readBytes
Description copied from interface:ProtonBuffer
Read from this buffer, into the destination array, the given number of bytes. This updates the read offset of this buffer by the length argument.- Specified by:
readBytes
in interfaceProtonBuffer
- Parameters:
destination
- The byte array to write into.offset
- Position in thedestination
to where bytes should be written from this buffer.length
- The number of bytes to copy.- Returns:
- This buffer.
-
ensureWritable
public ProtonBuffer ensureWritable(int size, int minimumGrowth, boolean allowCompaction) throws IndexOutOfBoundsException, IllegalArgumentException Description copied from interface:ProtonBuffer
Ensures that the requested number of bytes is available for write operations in the current buffer, growing the buffer if needed to meet the requested writable capacity. This method will not alter the write offset but may change the value returned from the capacity method if new buffer space is allocated. If the buffer cannot create the required number of byte via compaction then the buffer will be grown by either the requested number of bytes or by the minimum allowed value specified.This method allows buffer compaction as a strategy to reclaim already read space to make room for additional writes. This implies that a composite buffer can reuse already read buffers to extend the buffer's writable space by moving them to the end of the set of composite buffers and reseting their index values to make them fully writable.
- Specified by:
ensureWritable
in interfaceProtonBuffer
- Parameters:
size
- The number of bytes beyond the current write index needed.minimumGrowth
- The minimum number of byte that the buffer can grow byallowCompaction
- Can the buffer use compaction as a strategy to create more writable space.- Returns:
- this buffer for using in call chaining.
- Throws:
IndexOutOfBoundsException
- if the amount given would result in the buffer exceeding the maximum capacity for this buffer.IllegalArgumentException
- if the amount given is less than zero.
-
copy
Description copied from interface:ProtonBuffer
Returns a copy of this buffer's sub-region. Modifying the content of the returned buffer or this buffer does not affect each other at all. This method does not modify the value returned fromProtonBuffer.getReadOffset()
orProtonBuffer.getWriteOffset()
of this buffer.If this buffer is read-only and the requested copy is also read-only the copy may be shallow and allow each buffer to share the same memory.
- Specified by:
copy
in interfaceProtonBuffer
- Parameters:
index
- The index in this buffer where the copy should beginlength
- The number of bytes to copy to the new buffer from this one.readOnly
- Should the returned buffer be read-only or not.- Returns:
- a new ProtonBuffer instance containing the copied bytes.
- Throws:
IllegalArgumentException
- if the offset or length given are out of bounds.
-
split
Description copied from interface:ProtonBuffer
Splits this buffer at the given offset.This creates two independent buffers that can manage differing views of the same memory region or in the case of a composite buffer two buffers that take ownership of differing sections of the composite buffer range. For a composite buffer a single buffer might be split if the offset lays within its bounds but all others buffers are divided amongst the two split buffers.
If this buffer is a read-only buffer then the resulting split buffer will also be read-only.
- Specified by:
split
in interfaceProtonBuffer
- Parameters:
splitOffset
- The offset in this buffer where the split should occur.- Returns:
- A new buffer that owns the memory spanning the range given.
-
toString
Description copied from interface:ProtonBuffer
Returns a String created from the buffer's underlying bytes using the specifiedCharset
for the newly created String.- Specified by:
toString
in interfaceProtonBuffer
- Parameters:
charset
- theCharset
to use to construct the new string.- Returns:
- a string created from the buffer's underlying bytes using the given
Charset
.
-
toString
-
compareTo
Description copied from interface:ProtonBuffer
Compares the remaining content of the current buffer with the remaining content of the given buffer, which must not be null. Each byte is compared in turn as an unsigned value, returning upon the first difference. If no difference is found before the end of one buffer, the shorter buffer is considered less than the other, or else if the same length then they are considered equal.- Specified by:
compareTo
in interfaceComparable<ProtonBuffer>
- Specified by:
compareTo
in interfaceProtonBuffer
- Parameters:
buffer
- The buffer to compare to this instance.- Returns:
- a negative, zero, or positive integer when this buffer is less than, equal to, or greater than the given buffer.
- See Also:
-
equals
-
hashCode
public int hashCode() -
getByte
public byte getByte(int index) Description copied from interface:ProtonBufferAccessors
Reads a single byte at the given index and returns it without modification to the target buffer read offset.- Specified by:
getByte
in interfaceProtonBufferAccessors
- Parameters:
index
- The index into the buffer where the value should be read.- Returns:
- the value read from the given index.
-
getUnsignedByte
public int getUnsignedByte(int index) Description copied from interface:ProtonBufferAccessors
Gets a unsigned byte from the specified index, this method will not modify the read or write index.- Specified by:
getUnsignedByte
in interfaceProtonBufferAccessors
- Parameters:
index
- The index into the buffer where the value should be read.- Returns:
- the value read from the given index.
-
getChar
public char getChar(int index) Description copied from interface:ProtonBufferAccessors
Gets a 2-byte char from the specified index, this method will not modify the read or write index.- Specified by:
getChar
in interfaceProtonBufferAccessors
- Parameters:
index
- The index into the buffer where the value should be read.- Returns:
- the value read from the given index.
-
getShort
public short getShort(int index) Description copied from interface:ProtonBufferAccessors
Gets a short from the specified index, this method will not modify the read or write index.- Specified by:
getShort
in interfaceProtonBufferAccessors
- Parameters:
index
- The index into the buffer where the value should be read.- Returns:
- the value read from the given index.
-
getInt
public int getInt(int index) Description copied from interface:ProtonBufferAccessors
Gets a int from the specified index, this method will not modify the read or write index.- Specified by:
getInt
in interfaceProtonBufferAccessors
- Parameters:
index
- The index into the buffer where the value should be read.- Returns:
- the value read from the given index.
-
getLong
public long getLong(int index) Description copied from interface:ProtonBufferAccessors
Gets a long from the specified index, this method will not modify the read or write index.- Specified by:
getLong
in interfaceProtonBufferAccessors
- Parameters:
index
- The index into the buffer where the value should be read.- Returns:
- the value read from the given index.
-
setByte
Description copied from interface:ProtonBufferAccessors
Sets the byte value at the given write index in this buffer's backing data store.- Specified by:
setByte
in interfaceProtonBufferAccessors
- Parameters:
index
- The index to start the write from.value
- The value to write at the given index.- Returns:
- a reference to this ProtonBuffer for chaining.
-
setChar
Description copied from interface:ProtonBufferAccessors
Sets the char value at the given write index in this buffer's backing data store.- Specified by:
setChar
in interfaceProtonBufferAccessors
- Parameters:
index
- The index to start the write from.value
- The value to write at the given index.- Returns:
- a reference to this ProtonBuffer for chaining.
-
setShort
Description copied from interface:ProtonBufferAccessors
Sets the short value at the given write index in this buffer's backing data store.- Specified by:
setShort
in interfaceProtonBufferAccessors
- Parameters:
index
- The index to start the write from.value
- The value to write at the given index.- Returns:
- a reference to this ProtonBuffer for chaining.
-
setInt
Description copied from interface:ProtonBufferAccessors
Sets the int value at the given write index in this buffer's backing data store.- Specified by:
setInt
in interfaceProtonBufferAccessors
- Parameters:
index
- The index to start the write from.value
- The value to write at the given index.- Returns:
- a reference to this ProtonBuffer for chaining.
-
setLong
Description copied from interface:ProtonBufferAccessors
Sets the long value at the given write index in this buffer's backing data store.- Specified by:
setLong
in interfaceProtonBufferAccessors
- Parameters:
index
- The index to start the write from.value
- The value to write at the given index.- Returns:
- a reference to this ProtonBuffer for chaining.
-
readByte
public byte readByte()Description copied from interface:ProtonBufferAccessors
Reads one byte from the buffer and advances the read index by one.- Specified by:
readByte
in interfaceProtonBufferAccessors
- Returns:
- a single byte from the ProtonBuffer.
-
readChar
public char readChar()Description copied from interface:ProtonBufferAccessors
Reads a character value from the buffer and advances the read index by four.- Specified by:
readChar
in interfaceProtonBufferAccessors
- Returns:
- char value read from the buffer.
-
readShort
public short readShort()Description copied from interface:ProtonBufferAccessors
Reads a short value from the buffer and advances the read index by two.- Specified by:
readShort
in interfaceProtonBufferAccessors
- Returns:
- short value read from the buffer.
-
readInt
public int readInt()Description copied from interface:ProtonBufferAccessors
Reads a integer value from the buffer and advances the read index by four.- Specified by:
readInt
in interfaceProtonBufferAccessors
- Returns:
- integer value read from the buffer.
-
readLong
public long readLong()Description copied from interface:ProtonBufferAccessors
Reads a long value from the buffer and advances the read index by eight.- Specified by:
readLong
in interfaceProtonBufferAccessors
- Returns:
- long value read from the buffer.
-
writeByte
Description copied from interface:ProtonBufferAccessors
Writes a single byte to the buffer and advances the write index by one.- Specified by:
writeByte
in interfaceProtonBufferAccessors
- Parameters:
value
- The byte to write into the buffer.- Returns:
- this ProtonBuffer for chaining.
-
writeChar
Description copied from interface:ProtonBufferAccessors
Writes a single character to the buffer and advances the write index by four.- Specified by:
writeChar
in interfaceProtonBufferAccessors
- Parameters:
value
- The char to write into the buffer.- Returns:
- this ProtonBuffer for chaining.
-
writeShort
Description copied from interface:ProtonBufferAccessors
Writes a single short to the buffer and advances the write index by two.- Specified by:
writeShort
in interfaceProtonBufferAccessors
- Parameters:
value
- The short to write into the buffer.- Returns:
- this ProtonBuffer for chaining.
-
writeInt
Description copied from interface:ProtonBufferAccessors
Writes a single integer to the buffer and advances the write index by four.- Specified by:
writeInt
in interfaceProtonBufferAccessors
- Parameters:
value
- The integer to write into the buffer.- Returns:
- this ProtonBuffer for chaining.
-
writeLong
Description copied from interface:ProtonBufferAccessors
Writes a single long to the buffer and advances the write index by eight.- Specified by:
writeLong
in interfaceProtonBufferAccessors
- Parameters:
value
- The long to write into the buffer.- Returns:
- this ProtonBuffer for chaining.
-
transferTo
Description copied from interface:ProtonBuffer
Read from this buffer and write to the given channel.The number of bytes actually written to the channel are returned. No more than the given
length
of bytes, or the number of readable bytes, will be written to the channel, whichever is smaller. A channel that has a position marker, will be advanced by the number of bytes written. The read offset of this buffer will also be advanced by the number of bytes written.- Specified by:
transferTo
in interfaceProtonBuffer
- Parameters:
channel
- The channel to write to.length
- The maximum number of bytes to write.- Returns:
- The actual number of bytes written, possibly zero.
- Throws:
IOException
- If the write-operation on the channel failed for some reason.
-
transferFrom
Description copied from interface:ProtonBuffer
Reads a sequence of bytes from the given channel into this buffer.The method reads a given amount of bytes from the provided channel and returns the number of bytes actually read which can be zero or -1 if the channel has reached the end of stream state.
The length value given is a maximum limit however the code will adjust this if the number of writable bytes in this buffer is smaller (or zero) and the result will indicate how many bytes where actually read. The write offset of this buffer will be advanced by the number of bytes read from the buffer as will the channel position index if one exists.
- Specified by:
transferFrom
in interfaceProtonBuffer
- Parameters:
channel
- The readable byte channel where the bytes are readlength
- The maximum number of bytes to read from the channel- Returns:
- The number of bytes read, possibly zero, or -1 if the channel has reached end-of-stream
- Throws:
IOException
- if the read operation fails
-
transferFrom
Description copied from interface:ProtonBuffer
Reads a sequence of bytes from the given channel into this buffer.The method reads a given amount of bytes from the provided channel and returns the number of bytes actually read which can be zero or -1 if the channel has reached the end of stream state.
The length value given is a maximum limit however the code will adjust this if the number of writable bytes in this buffer is smaller (or zero) and the result will indicate how many bytes where actually read. The write offset of this buffer will be advanced by the number of bytes read from the buffer, the channel will not have its position modified.
- Specified by:
transferFrom
in interfaceProtonBuffer
- Parameters:
channel
- The File channel where the bytes are readposition
- The position in the channel where the read should beginlength
- The maximum number of bytes to read from the channel- Returns:
- The number of bytes read, possibly zero, or -1 if the channel has reached end-of-stream
- Throws:
IOException
- if the read operation fails
-
componentAccessor
Description copied from interface:ProtonBuffer
Returns a component access object that can be used to gain access to the constituent buffer components for use in IO operations or other lower level buffer operations that need to work on single compoents.The general usage of the component access object should be within a try-with-resource block as follows:
try (ProtonBufferComponentAccessor accessor = buffer.componentAccessor()) { for (ProtonBufferComponent component : accessor.readableComponents()) { // Access logic here.... } }
- Specified by:
componentAccessor
in interfaceProtonBuffer
- Returns:
- a component access object instance used to view the buffer internal components
-
first
Description copied from interface:ProtonBufferComponentAccessor
Returns the first component that this access object provides which resets the iteration state to the beginning.- Specified by:
first
in interfaceProtonBufferComponentAccessor
- Returns:
- the first component in the sequence of
ProtonBufferComponent
instance.
-
next
Description copied from interface:ProtonBufferComponentAccessor
Returns the next component that this access object provides which can be null if either the first method has never been called or the access of components has reached the end of the chain of buffer components that this access object is assigned to.- Specified by:
next
in interfaceProtonBufferComponentAccessor
- Returns:
- the first component in the sequence of
ProtonBufferComponent
instance.
-
hasReadbleArray
public boolean hasReadbleArray()- Specified by:
hasReadbleArray
in interfaceProtonBufferComponent
- Returns:
- true if the component is backed by a byte array that has a readable portion.
-
advanceReadOffset
Description copied from interface:ProtonBuffer
Adjusts the currentProtonBuffer.getReadOffset()
of this buffer by the specifiedlength
.- Specified by:
advanceReadOffset
in interfaceProtonBuffer
- Specified by:
advanceReadOffset
in interfaceProtonBufferComponent
- Parameters:
amount
- the number of bytes to advance the read offset by.- Returns:
- this ProtonBuffer for chaining.
-
getReadableArray
public byte[] getReadableArray()Description copied from interface:ProtonBufferComponent
Returns the readable array if one exists or throws an exception.- Specified by:
getReadableArray
in interfaceProtonBufferComponent
- Returns:
- the readable array that backs this buffer component.
-
getReadableArrayOffset
public int getReadableArrayOffset()- Specified by:
getReadableArrayOffset
in interfaceProtonBufferComponent
- Returns:
- the offset into the readable array where the readable bytes begin.
-
getReadableArrayLength
public int getReadableArrayLength()- Specified by:
getReadableArrayLength
in interfaceProtonBufferComponent
- Returns:
- the length of the readable array from the offset that is owned by this component..
-
getReadableBuffer
Description copied from interface:ProtonBufferComponent
Returns the readable array if one exists or throws an exception.- Specified by:
getReadableBuffer
in interfaceProtonBufferComponent
- Returns:
- the readable array that backs this buffer component.
-
advanceWriteOffset
Description copied from interface:ProtonBuffer
Adjusts the currentProtonBuffer.getWriteOffset()
of this buffer by the specifiedlength
.- Specified by:
advanceWriteOffset
in interfaceProtonBuffer
- Specified by:
advanceWriteOffset
in interfaceProtonBufferComponent
- Parameters:
amount
- the number of bytes to advance the write offset by.- Returns:
- this ProtonBuffer for chaining.
-
hasWritableArray
public boolean hasWritableArray()- Specified by:
hasWritableArray
in interfaceProtonBufferComponent
- Returns:
- true if the component is backed by a byte array that has writable bytes.
-
getWritableArray
public byte[] getWritableArray()Description copied from interface:ProtonBufferComponent
Returns the writable array if one exists or throws an exception.- Specified by:
getWritableArray
in interfaceProtonBufferComponent
- Returns:
- the writable array that backs this buffer component.
-
getWritableArrayOffset
public int getWritableArrayOffset()- Specified by:
getWritableArrayOffset
in interfaceProtonBufferComponent
- Returns:
- the offset into the writable array where the writable bytes begin.
-
getWritableArrayLength
public int getWritableArrayLength()- Specified by:
getWritableArrayLength
in interfaceProtonBufferComponent
- Returns:
- the length of the writable array from the offset that is owned by this component..
-
getWritableBuffer
Description copied from interface:ProtonBufferComponent
Returns the writableByteBuffer
if one exists or throws an exception.- Specified by:
getWritableBuffer
in interfaceProtonBufferComponent
- Returns:
- the writable buffer that backs this buffer component.
-
getNativeAddress
public long getNativeAddress()Description copied from interface:ProtonBufferComponent
Gets the native address of the backing buffer if one exists otherwise returns 0.The returned address is the base address for the memory region that back this buffer which should not be used for reads and write as the backing region could be larger and not all portions of the backing region might be owned by this buffer component. The caller should use the methods
ProtonBufferComponent.getNativeReadAddress()
andProtonBufferComponent.getNativeWriteAddress()
which each use this method to compute where these value actually fall in the native memory region.- Specified by:
getNativeAddress
in interfaceProtonBufferComponent
- Returns:
- The native memory address for the region backing this buffer, if any, otherwise 0.
-
getNativeReadAddress
public long getNativeReadAddress()Description copied from interface:ProtonBufferComponent
Gets the native address where reads from this buffer component should start.- Specified by:
getNativeReadAddress
in interfaceProtonBufferComponent
- Returns:
- The native memory address where reads start, if any, otherwise 0.
-
getNativeWriteAddress
public long getNativeWriteAddress()Description copied from interface:ProtonBufferComponent
Gets the native address where write to this buffer component should start.- Specified by:
getNativeWriteAddress
in interfaceProtonBufferComponent
- Returns:
- The native memory address where writing should start, if any, otherwise 0.
-
bufferIterator
Description copied from interface:ProtonBuffer
Creates and returns a newProtonBufferIterator
that iterates from the given offset and continues until specified number of bytes has been traversed. The source buffer read and write offsets are not modified by an iterator instance.The caller must ensure that the source buffer lifetime extends beyond the lifetime of the returned
ProtonBufferIterator
.- Specified by:
bufferIterator
in interfaceProtonBuffer
- Parameters:
offset
- The offset into the buffer where iteration beginslength
- The number of bytes to iterate over.- Returns:
- a new buffer iterator that iterates over the readable bytes.
-
bufferIterator
Description copied from interface:ProtonBuffer
Creates and returns a newProtonBufferIterator
that iterates from the current read offset and continues until all readable bytes have been traversed. The source buffer read and write offsets are not modified by an iterator instance.The caller must ensure that the source buffer lifetime extends beyond the lifetime of the returned
ProtonBufferIterator
.- Specified by:
bufferIterator
in interfaceProtonBuffer
- Specified by:
bufferIterator
in interfaceProtonBufferComponent
- Returns:
- a new buffer iterator that iterates over the readable bytes.
-
bufferReverseIterator
Description copied from interface:ProtonBuffer
Creates and returns a newProtonBufferIterator
that reverse iterates from the given offset and continues until specified number of bytes has been traversed. The source buffer read and write offsets are not modified by an iterator instance.The caller must ensure that the source buffer lifetime extends beyond the lifetime of the returned
ProtonBufferIterator
.- Specified by:
bufferReverseIterator
in interfaceProtonBuffer
- Parameters:
offset
- The offset into the buffer where iteration beginslength
- The number of bytes to iterate over.- Returns:
- a new buffer iterator that iterates over the readable bytes.
-
indexOf
public int indexOf(byte needle, int offset, int length) Description copied from interface:ProtonBuffer
Starting from the given offset into this buffer, find the next offset (index) in the buffer where the given value is located or-1
if the value is not found by the time the specified number of bytes has been searched. This method does not affect the read or write offset and can be called from any point in the buffer regardless of the current read or write offsets. The search bounds are that of the buffer's readable bytes meaning that the starting office cannot be less than the read offset and the length cannot cause the search to read past the readable bytes otherwise anIndexOutOfBoundsException
will be thrown.- Specified by:
indexOf
in interfaceProtonBuffer
- Parameters:
needle
- The byte value to search for in the remaining buffer bytes.offset
- The offset into the buffer where the search should begin from.length
- The offset into the buffer where the search should begin from.- Returns:
- the location in the buffer where the value was found or
-1
if not found.
-
releaseResourceOwnership
protected void releaseResourceOwnership()- Specified by:
releaseResourceOwnership
in classSharedResource<ProtonBuffer>
-
transferTheResource
- Specified by:
transferTheResource
in classSharedResource<ProtonBuffer>
-
resourceIsClosedException
- Specified by:
resourceIsClosedException
in classSharedResource<ProtonBuffer>
-