Interface ProtonBuffer
- 
- All Superinterfaces:
- java.lang.Comparable<ProtonBuffer>
 - All Known Implementing Classes:
- ProtonAbstractBuffer,- ProtonByteBuffer,- ProtonCompositeBuffer,- ProtonDuplicatedBuffer,- ProtonNettyByteBuffer,- ProtonNioByteBuffer,- ProtonSlicedBuffer
 
 public interface ProtonBuffer extends java.lang.Comparable<ProtonBuffer> Buffer type abstraction used to provide users of the proton library with a means of using their own type of byte buffer types in combination with the library tooling.
- 
- 
Method SummaryAll Methods Instance Methods Abstract Methods Default Methods Modifier and Type Method Description intcapacity()ProtonBuffercapacity(int newCapacity)Adjusts the capacity of this buffer.ProtonBufferclear()Reset the read and write offsets to zero and clears the position markers if set previously, this method is not required to reset the data previously written to this buffer.intcompareTo(ProtonBuffer buffer)Compares the remaining content of the current buffer with the remaining content of the given buffer, which must not be null.ProtonBuffercopy()Create a deep copy of the readable bytes of this ProtonBuffer, the returned buffer can be modified without affecting the contents or position markers of this instance.ProtonBuffercopy(int index, int length)Returns a copy of this buffer's sub-region.ProtonBufferduplicate()Create a duplicate of this ProtonBuffer instance that shares the same backing data store and but maintains separate position index values.ProtonBufferensureWritable(int amount)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.byte[]getArray()Returns the backing array for this ProtonBuffer instance if there is such an array or throws an exception if this ProtonBuffer implementation has no backing array.intgetArrayOffset()booleangetBoolean(int index)Gets a boolean from the specified index, this method will not modify the read or write index.bytegetByte(int index)Gets a byte from the specified index, this method will not modify the read or write index.ProtonBuffergetBytes(int index, byte[] destination)Transfers this buffer's data to the specified destination starting at the specified absoluteindex.ProtonBuffergetBytes(int index, byte[] destination, int offset, int length)Transfers this buffer's data to the specified destination starting at the specified absoluteindex.ProtonBuffergetBytes(int index, java.nio.ByteBuffer destination)Transfers this buffer's data to the specified destination starting at the specified absoluteindexuntil the destination's position reaches its limit.ProtonBuffergetBytes(int index, ProtonBuffer destination)Transfers this buffer's data to the specified destination starting at the specified absoluteindexuntil the destination becomes non-writable.ProtonBuffergetBytes(int index, ProtonBuffer destination, int length)Transfers this buffer's data to the specified destination starting at the specified absoluteindex.ProtonBuffergetBytes(int index, ProtonBuffer destination, int offset, int length)Transfers this buffer's data to the specified destination starting at the specified absoluteindex.chargetChar(int index)Gets a 2-byte char from the specified index, this method will not modify the read or write index.doublegetDouble(int index)Gets a double from the specified index, this method will not modify the read or write index.floatgetFloat(int index)Gets a float from the specified index, this method will not modify the read or write index.intgetInt(int index)Gets a int from the specified index, this method will not modify the read or write index.longgetLong(int index)Gets a long from the specified index, this method will not modify the read or write index.intgetMaxWritableBytes()Gets the current maximum number of bytes that can be written to this buffer.intgetReadableBytes()intgetReadIndex()shortgetShort(int index)Gets a short from the specified index, this method will not modify the read or write index.shortgetUnsignedByte(int index)Gets a unsigned byte from the specified index, this method will not modify the read or write index.longgetUnsignedInt(int index)Gets a unsigned int from the specified index, this method will not modify the read or write index.intgetUnsignedShort(int index)Gets a unsigned short from the specified index, this method will not modify the read or write index.intgetWritableBytes()intgetWriteIndex()booleanhasArray()booleanisReadable()booleanisReadable(int size)Check if the given number of bytes can be read from the buffer.booleanisWritable()booleanisWritable(int size)Check if the requested number of bytes can be written into this buffer.ProtonBuffermarkReadIndex()Marks the current read index so that it can later be restored by a call toresetReadIndex(), the initial mark value is 0.ProtonBuffermarkWriteIndex()Marks the current write index so that it can later be restored by a call toresetWriteIndex(), the initial mark value is 0.intmaxCapacity()Returns the number of bytes that this buffer is allowed to grow to when write operations exceed the current capacity value.booleanreadBoolean()Reads a boolean value from the buffer and advances the read index by one.bytereadByte()Reads one byte from the buffer and advances the read index by one.ProtonBufferreadBytes(byte[] target)Reads bytes from this buffer and writes them into the destination byte array incrementing the read index by the value of the length of the destination array.ProtonBufferreadBytes(byte[] target, int length)Reads bytes from this buffer and writes them into the destination byte array incrementing the read index by the length value passed.ProtonBufferreadBytes(byte[] target, int offset, int length)Reads bytes from this buffer and writes them into the destination byte array incrementing the read index by the length value passed, the bytes are read into the given buffer starting from the given offset value.ProtonBufferreadBytes(java.nio.ByteBuffer destination)Transfers this buffer's data to the specified destination starting at the currentreadIndexuntil the destination's position reaches its limit, and increases thereadIndexby the number of the transferred bytes.ProtonBufferreadBytes(ProtonBuffer target)Reads bytes from this buffer and writes them into the destination ProtonBuffer incrementing the read index by the value of the number of bytes written to the target.ProtonBufferreadBytes(ProtonBuffer target, int length)Reads bytes from this buffer and writes them into the destination ProtonBuffer incrementing the read index by the number of bytes written.ProtonBufferreadBytes(ProtonBuffer target, int offset, int length)Transfers this buffer's data to the specified destination starting at the currentreadIndexand increases thereadIndexby the number of the transferred bytes (=length).doublereadDouble()Reads a double value from the buffer and advances the read index by eight.floatreadFloat()Reads a float value from the buffer and advances the read index by four.intreadInt()Reads a integer value from the buffer and advances the read index by four.longreadLong()Reads a long value from the buffer and advances the read index by eight.shortreadShort()Reads a short value from the buffer and advances the read index by two.ProtonBufferresetReadIndex()Resets the current read index to the previously marked value.ProtonBufferresetWriteIndex()Resets the current write index to the previously marked value.ProtonBuffersetBoolean(int index, boolean value)Sets the boolean value at the given write index in this buffer's backing data store.ProtonBuffersetByte(int index, int value)Sets the byte value at the given write index in this buffer's backing data store.ProtonBuffersetBytes(int index, byte[] source)Transfers the specified source array's data to this buffer starting at the specified absoluteindex.ProtonBuffersetBytes(int index, byte[] source, int offset, int length)Transfers the specified source array's data to this buffer starting at the specified absoluteindex.ProtonBuffersetBytes(int index, java.nio.ByteBuffer source)Transfers the specified source buffer's data to this buffer starting at the specified absoluteindexuntil the source buffer's position reaches its limit.ProtonBuffersetBytes(int index, ProtonBuffer source)Transfers the specified source buffer's data to this buffer starting at the specified absoluteindexuntil the source buffer becomes unreadable.ProtonBuffersetBytes(int index, ProtonBuffer source, int length)Transfers the specified source buffer's data to this buffer starting at the specified absoluteindex.ProtonBuffersetBytes(int index, ProtonBuffer source, int offset, int length)Transfers the specified source buffer's data to this buffer starting at the specified absoluteindex.ProtonBuffersetChar(int index, int value)Sets the char value at the given write index in this buffer's backing data store.ProtonBuffersetDouble(int index, double value)Sets the double value at the given write index in this buffer's backing data store.ProtonBuffersetFloat(int index, float value)Sets the float value at the given write index in this buffer's backing data store.ProtonBuffersetIndex(int readIndex, int writeIndex)Used to set the read index and the write index in one call.ProtonBuffersetInt(int index, int value)Sets the int value at the given write index in this buffer's backing data store.ProtonBuffersetLong(int index, long value)Sets the long value at the given write index in this buffer's backing data store.ProtonBuffersetReadIndex(int value)Sets the read index for this buffer.ProtonBuffersetShort(int index, int value)Sets the short value at the given write index in this buffer's backing data store.ProtonBuffersetWriteIndex(int value)Sets the write index for this buffer.ProtonBufferskipBytes(int length)Increases the currentreadIndexof this buffer by the specifiedlength.ProtonBufferslice()Create a new ProtonBuffer whose contents are a subsequence of the contents of thisProtonBuffer.ProtonBufferslice(int index, int length)Create a new ProtonBuffer whose contents are a subsequence of the contents of thisProtonBuffer.java.nio.ByteBuffertoByteBuffer()Returns a ByteBuffer that represents the readable bytes contained in this buffer.java.nio.ByteBuffertoByteBuffer(int index, int length)Returns a ByteBuffer that represents the given span of bytes from the readable portion of this buffer.java.lang.StringtoString(java.nio.charset.Charset charset)Returns a String created from the buffer's underlying bytes using the specifiedCharsetfor the newly created String.default java.lang.Objectunwrap()Return the underlying buffer object that backs thisProtonBufferinstance, or null if there is no backing object.ProtonBufferwriteBoolean(boolean value)Writes a single boolean to the buffer and advances the write index by one.ProtonBufferwriteByte(int value)Writes a single byte to the buffer and advances the write index by one.ProtonBufferwriteBytes(byte[] value)Writes the contents of the given byte array into the buffer and advances the write index by the length of the given array.ProtonBufferwriteBytes(byte[] value, int length)Writes the contents of the given byte array into the buffer and advances the write index by the length value given.ProtonBufferwriteBytes(byte[] value, int offset, int length)Writes the contents of the given byte array into the buffer and advances the write index by the length value given.ProtonBufferwriteBytes(java.nio.ByteBuffer source)Transfers the specified source buffer's data to this buffer starting at the currentwriteIndexuntil the source buffer's position reaches its limit, and increases thewriteIndexby the number of the transferred bytes.ProtonBufferwriteBytes(ProtonBuffer source)Transfers the specified source buffer's data to this buffer starting at the currentwriteIndexuntil the source buffer becomes unreadable, and increases thewriteIndexby the number of the transferred bytes.ProtonBufferwriteBytes(ProtonBuffer source, int length)Transfers the specified source buffer's data to this buffer starting at the currentwriteIndexand increases thewriteIndexby the number of the transferred bytes (=length).ProtonBufferwriteBytes(ProtonBuffer source, int offset, int length)Transfers the specified source buffer's data to this buffer starting at the currentwriteIndexand increases thewriteIndexby the number of the transferred bytes (=length).ProtonBufferwriteDouble(double value)Writes a single double to the buffer and advances the write index by eight.ProtonBufferwriteFloat(float value)Writes a single float to the buffer and advances the write index by four.ProtonBufferwriteInt(int value)Writes a single integer to the buffer and advances the write index by four.ProtonBufferwriteLong(long value)Writes a single long to the buffer and advances the write index by eight.ProtonBufferwriteShort(short value)Writes a single short to the buffer and advances the write index by two.
 
- 
- 
- 
Method Detail- 
unwrapdefault java.lang.Object unwrap() Return the underlying buffer object that backs thisProtonBufferinstance, or null 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.- Returns:
- an underlying buffer object or other backing store for this buffer.
 
 - 
hasArrayboolean hasArray() - Returns:
- true if this buffer has a backing byte array that can be accessed.
 
 - 
getArraybyte[] getArray() Returns the backing array for this ProtonBuffer instance if there is such an array or throws an exception if this ProtonBuffer implementation has no backing array.Changes to the returned array are visible to other users of this ProtonBuffer. - Returns:
- the backing byte array for this ProtonBuffer.
- Throws:
- java.lang.UnsupportedOperationException- if this buffer type has no backing array.
 
 - 
getArrayOffsetint getArrayOffset() - Returns:
- the offset of the first byte in the backing array belonging to this buffer.
- Throws:
- java.lang.UnsupportedOperationException- if this buffer type has no backing array.
 
 - 
capacityint capacity() - Returns:
- the number of bytes this buffer can currently contain.
 
 - 
capacityProtonBuffer capacity(int newCapacity) Adjusts the capacity of this buffer. If the new capacity is less than the current capacity, the content of this buffer is truncated. If the new capacity is greater than the current capacity, the buffer is appended with unspecified data whose length is new capacity - current capacity.- Parameters:
- newCapacity- the new maximum capacity value of this buffer.
- Returns:
- this buffer for using in call chaining.
 
 - 
maxCapacityint maxCapacity() Returns the number of bytes that this buffer is allowed to grow to when write operations exceed the current capacity value.- Returns:
- the number of bytes this buffer is allowed to grow to.
 
 - 
ensureWritableProtonBuffer ensureWritable(int amount) throws java.lang.IndexOutOfBoundsException, java.lang.IllegalArgumentException 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.- Parameters:
- amount- The number of bytes beyond the current write index needed.
- Returns:
- this buffer for using in call chaining.
- Throws:
- java.lang.IllegalArgumentException- if the amount given is less than zero.
- java.lang.IndexOutOfBoundsException- if the amount given would result in the buffer exceeding the maximum capacity for this buffer.
 
 - 
duplicateProtonBuffer duplicate() Create a duplicate of this ProtonBuffer instance that shares the same backing data store and but maintains separate position index values. Changes to one buffer are visible in any of its duplicates. This method does not copy the read or write markers to the new buffer instance.- Returns:
- a new ProtonBuffer instance that shares the backing data as this one.
 
 - 
sliceProtonBuffer slice() Create a new ProtonBuffer whose contents are a subsequence of the contents of thisProtonBuffer.The starting point of the new buffer starts at this buffer's current position, the marks and limits of the new buffer will be independent of this buffer however changes to the data backing the buffer will be visible in this buffer. - Returns:
- a new ProtonBufferwhose contents are a subsequence of this buffer.
 
 - 
sliceProtonBuffer slice(int index, int length) Create a new ProtonBuffer whose contents are a subsequence of the contents of thisProtonBuffer.The starting point of the new buffer starts at given index into this buffer and spans the number of bytes given by the length. Changes to the contents of this buffer or to the produced slice buffer are visible in the other. - Parameters:
- index- The index in this buffer where the slice should begin.
- length- The number of bytes to make visible to the new buffer from this one.
- Returns:
- a new ProtonBufferwhose contents are a subsequence of this buffer.
 
 - 
copyProtonBuffer copy() Create a deep copy of the readable bytes of this ProtonBuffer, the returned buffer can be modified without affecting the contents or position markers of this instance.- Returns:
- a deep copy of this ProtonBuffer instance.
 
 - 
copyProtonBuffer copy(int index, int length) 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 fromgetReadIndex()orgetWriteIndex()of this buffer.- Parameters:
- index- The index in this buffer where the copy should begin
- length- The number of bytes to copy to the new buffer from this one.
- Returns:
- a new ProtonBuffer instance containing the copied bytes.
 
 - 
clearProtonBuffer clear() Reset the read and write offsets to zero and clears the position markers if set previously, this method is not required to reset the data previously written to this buffer.- Returns:
- this buffer for using in call chaining.
 
 - 
toByteBufferjava.nio.ByteBuffer toByteBuffer() Returns a ByteBuffer that represents the readable bytes contained in this buffer.This method should attempt to return a ByteBuffer that shares the backing data store with this buffer however if that is not possible it is permitted that the returned ByteBuffer contain a copy of the readable bytes of this ProtonBuffer. - Returns:
- a ByteBuffer that represents the readable bytes of this buffer.
 
 - 
toByteBufferjava.nio.ByteBuffer toByteBuffer(int index, int length)Returns a ByteBuffer that represents the given span of bytes from the readable portion of this buffer.This method should attempt to return a ByteBuffer that shares the backing data store with this buffer however if that is not possible it is permitted that the returned ByteBuffer contain a copy of the readable bytes of this ProtonBuffer. - Parameters:
- index- The starting index in this where the ByteBuffer view should begin.
- length- The number of bytes to include in the ByteBuffer view.
- Returns:
- a ByteBuffer that represents the given view of this buffers readable bytes.
 
 - 
toStringjava.lang.String toString(java.nio.charset.Charset charset) Returns a String created from the buffer's underlying bytes using the specifiedCharsetfor the newly created String.- Parameters:
- charset- the- Charsetto use to construct the new string.
- Returns:
- a string created from the buffer's underlying bytes using the given Charset.
 
 - 
getReadableBytesint getReadableBytes() - Returns:
- the number of bytes available for reading from this buffer.
 
 - 
getWritableBytesint getWritableBytes() - Returns:
- the number of bytes that can be written to this buffer before the limit is hit.
 
 - 
getMaxWritableBytesint getMaxWritableBytes() Gets the current maximum number of bytes that can be written to this buffer. This is the same value that can be computed by subtracting the current write index from the maximum buffer capacity.- Returns:
- the maximum number of bytes that can be written to this buffer before the limit is hit.
 
 - 
getReadIndexint getReadIndex() - Returns:
- the current value of the read index for this buffer.
 
 - 
setReadIndexProtonBuffer setReadIndex(int value) Sets the read index for this buffer.- Parameters:
- value- The index into the buffer where the read index should be positioned.
- Returns:
- this buffer for use in chaining.
- Throws:
- java.lang.IndexOutOfBoundsException- if the value given is greater than the write index or negative.
 
 - 
getWriteIndexint getWriteIndex() - Returns:
- the current value of the write index for this buffer.
 
 - 
setWriteIndexProtonBuffer setWriteIndex(int value) Sets the write index for this buffer.- Parameters:
- value- The index into the buffer where the write index should be positioned.
- Returns:
- this buffer for use in chaining.
- Throws:
- java.lang.IndexOutOfBoundsException- if the value less than the read index or greater than the capacity.
 
 - 
setIndexProtonBuffer setIndex(int readIndex, int writeIndex) Used to set the read index and the write index in one call. This methods allows for an update to the read index and write index to values that could not be set using simple setReadIndex and setWriteIndex call where the values would violate the constraints placed on them by the value of the other index.- Parameters:
- readIndex- The new read index to assign to this buffer.
- writeIndex- The new write index to assign to this buffer.
- Returns:
- this buffer for use in chaining.
- Throws:
- java.lang.IndexOutOfBoundsException- if the values violate the basic tenants of readIndex and writeIndex
 
 - 
markReadIndexProtonBuffer markReadIndex() Marks the current read index so that it can later be restored by a call toresetReadIndex(), the initial mark value is 0.- Returns:
- this buffer for use in chaining.
 
 - 
resetReadIndexProtonBuffer resetReadIndex() Resets the current read index to the previously marked value.- Returns:
- this buffer for use in chaining.
- Throws:
- java.lang.IndexOutOfBoundsException- if the current write index is less than the marked read index.
 
 - 
markWriteIndexProtonBuffer markWriteIndex() Marks the current write index so that it can later be restored by a call toresetWriteIndex(), the initial mark value is 0.- Returns:
- this buffer for use in chaining.
 
 - 
resetWriteIndexProtonBuffer resetWriteIndex() Resets the current write index to the previously marked value.- Returns:
- this buffer for use in chaining.
- Throws:
- java.lang.IndexOutOfBoundsException- if the current read index is greater than the marked write index.
 
 - 
isReadableboolean isReadable() - Returns:
- true if the read index is less than the write index.
 
 - 
isReadableboolean isReadable(int size) Check if the given number of bytes can be read from the buffer.- Parameters:
- size- the size that is desired in readable bytes
- Returns:
- true if the buffer has at least the given number of readable bytes remaining.
 
 - 
compareToint compareTo(ProtonBuffer buffer) 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:
- compareToin interface- java.lang.Comparable<ProtonBuffer>
- Returns:
- a negative, zero, or positive integer when this buffer is less than, equal to, or greater than the given buffer.
- See Also:
- Comparable.compareTo(Object)
 
 - 
getBooleanboolean getBoolean(int index) Gets a boolean from the specified index, this method will not modify the read or write index.- Parameters:
- index- The index into the buffer where the value should be read.
- Returns:
- the value read from the given index.
- Throws:
- java.lang.IndexOutOfBoundsException- if the index is negative or past the current buffer capacity.
 
 - 
getBytebyte getByte(int index) Gets a byte from the specified index, this method will not modify the read or write index.- Parameters:
- index- The index into the buffer where the value should be read.
- Returns:
- the value read from the given index.
- Throws:
- java.lang.IndexOutOfBoundsException- if the index is negative or past the current buffer capacity.
 
 - 
getUnsignedByteshort getUnsignedByte(int index) Gets a unsigned byte from the specified index, this method will not modify the read or write index.- Parameters:
- index- The index into the buffer where the value should be read.
- Returns:
- the value read from the given index.
- Throws:
- java.lang.IndexOutOfBoundsException- if the index is negative or past the current buffer capacity.
 
 - 
getCharchar getChar(int index) Gets a 2-byte char from the specified index, this method will not modify the read or write index.- Parameters:
- index- The index into the buffer where the value should be read.
- Returns:
- the value read from the given index.
- Throws:
- java.lang.IndexOutOfBoundsException- if the index is negative or past the current buffer capacity.
 
 - 
getShortshort getShort(int index) Gets a short from the specified index, this method will not modify the read or write index.- Parameters:
- index- The index into the buffer where the value should be read.
- Returns:
- the value read from the given index.
- Throws:
- java.lang.IndexOutOfBoundsException- if the index is negative or past the current buffer capacity.
 
 - 
getUnsignedShortint getUnsignedShort(int index) Gets a unsigned short from the specified index, this method will not modify the read or write index.- Parameters:
- index- The index into the buffer where the value should be read.
- Returns:
- the value read from the given index.
- Throws:
- java.lang.IndexOutOfBoundsException- if the index is negative or past the current buffer capacity.
 
 - 
getIntint getInt(int index) Gets a int from the specified index, this method will not modify the read or write index.- Parameters:
- index- The index into the buffer where the value should be read.
- Returns:
- the value read from the given index.
- Throws:
- java.lang.IndexOutOfBoundsException- if the index is negative or past the current buffer capacity.
 
 - 
getUnsignedIntlong getUnsignedInt(int index) Gets a unsigned int from the specified index, this method will not modify the read or write index.- Parameters:
- index- The index into the buffer where the value should be read.
- Returns:
- the value read from the given index.
- Throws:
- java.lang.IndexOutOfBoundsException- if the index is negative or past the current buffer capacity.
 
 - 
getLonglong getLong(int index) Gets a long from the specified index, this method will not modify the read or write index.- Parameters:
- index- The index into the buffer where the value should be read.
- Returns:
- the value read from the given index.
- Throws:
- java.lang.IndexOutOfBoundsException- if the index is negative or past the current buffer capacity.
 
 - 
getFloatfloat getFloat(int index) Gets a float from the specified index, this method will not modify the read or write index.- Parameters:
- index- The index into the buffer where the value should be read.
- Returns:
- the value read from the given index.
- Throws:
- java.lang.IndexOutOfBoundsException- if the index is negative or past the current buffer capacity.
 
 - 
getDoubledouble getDouble(int index) Gets a double from the specified index, this method will not modify the read or write index.- Parameters:
- index- The index into the buffer where the value should be read.
- Returns:
- the value read from the given index.
- Throws:
- java.lang.IndexOutOfBoundsException- if the index is negative or past the current buffer capacity.
 
 - 
getBytesProtonBuffer getBytes(int index, ProtonBuffer destination) Transfers this buffer's data to the specified destination starting at the specified absoluteindexuntil the destination becomes non-writable. This method is basically same withgetBytes(int, ProtonBuffer, int, int), except that this method increases thewriteIndexof the destination by the number of the transferred bytes whilegetBytes(int, ProtonBuffer, int, int)does not. This method does not modifyreadIndexorwriteIndexof the source buffer (i.e.this).- Parameters:
- index- The index into the buffer where the value should be read.
- destination- the destination buffer for the bytes to be read
- Returns:
- this buffer for chaining
- Throws:
- java.lang.IndexOutOfBoundsException- if the specified- indexis less than- 0or if- index + dst.writableBytesis greater than- this.capacity
 
 - 
getBytesProtonBuffer getBytes(int index, ProtonBuffer destination, int length) Transfers this buffer's data to the specified destination starting at the specified absoluteindex. This method is basically same withgetBytes(int, ProtonBuffer, int, int), except that this method increases thewriteIndexof the destination by the number of the transferred bytes whilegetBytes(int, ProtonBuffer, int, int)does not. This method does not modifyreadIndexorwriteIndexof the source buffer (i.e.this).- Parameters:
- index- the index in the buffer to start the read from
- destination- the destination buffer for the bytes to be read
- length- the number of bytes to transfer
- Returns:
- this buffer for chaining
- Throws:
- java.lang.IndexOutOfBoundsException- if the specified- indexis less than- 0, if- index + lengthis greater than- this.capacity, or if- lengthis greater than- dst.writableBytes
 
 - 
getBytesProtonBuffer getBytes(int index, ProtonBuffer destination, int offset, int length) Transfers this buffer's data to the specified destination starting at the specified absoluteindex. This method does not modifyreadIndexorwriteIndexof both the source (i.e.this) and the destination.- Parameters:
- index- The index into the buffer where the value should be read.
- destination- The buffer where the bytes read will be written to
- offset- The offset into the destination where the write starts
- length- The number of bytes to transfer
- Returns:
- this buffer for chaining
- Throws:
- java.lang.IndexOutOfBoundsException- if the specified- indexis less than- 0, if the specified- dstIndexis less than- 0, if- index + lengthis greater than- this.capacity, or if- dstIndex + lengthis greater than- dst.capacity
 
 - 
getBytesProtonBuffer getBytes(int index, byte[] destination) Transfers this buffer's data to the specified destination starting at the specified absoluteindex. This method does not modifyreadIndexorwriteIndexof this buffer- Parameters:
- index- The index into the buffer where the value should be read.
- destination- The buffer where the bytes read will be written to
- Returns:
- this buffer for chaining
- Throws:
- java.lang.IndexOutOfBoundsException- if the specified- indexis less than- 0or if- index + dst.lengthis greater than- this.capacity
 
 - 
getBytesProtonBuffer getBytes(int index, byte[] destination, int offset, int length) Transfers this buffer's data to the specified destination starting at the specified absoluteindex. This method does not modify#getReadIndex()or#getWriteIndex()of this buffer.- Parameters:
- index- The index into the buffer where the value should be read.
- destination- The buffer where the bytes read will be written to
- offset- the offset into the destination to begin writing the bytes.
- length- the number of bytes to transfer from this buffer to the target buffer.
- Returns:
- this buffer for chaining
- Throws:
- java.lang.IndexOutOfBoundsException- if the specified- indexis less than- 0, if the specified- offsetis less than- 0, if- index + lengthis greater than- this.capacity, or if- offset + lengthis greater than- target.length
 
 - 
getBytesProtonBuffer getBytes(int index, java.nio.ByteBuffer destination) Transfers this buffer's data to the specified destination starting at the specified absoluteindexuntil the destination's position reaches its limit. This method does not modify#getReadIndex()or#getWriteIndex()of this buffer while the destination'spositionwill be increased.- Parameters:
- index- The index into the buffer where the value should be read.
- destination- The buffer where the bytes read will be written to
- Returns:
- this buffer for chaining
- Throws:
- java.lang.IndexOutOfBoundsException- if the specified- indexis less than- 0or if- index + destination.remaining()is greater than- #capacity()
 
 - 
setByteProtonBuffer setByte(int index, int value) Sets the byte value at the given write index in this buffer's backing data store.- 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.
- Throws:
- java.lang.IndexOutOfBoundsException- if the index is negative or the write would exceed capacity.
 
 - 
setBooleanProtonBuffer setBoolean(int index, boolean value) Sets the boolean value at the given write index in this buffer's backing data store.- 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.
- Throws:
- java.lang.IndexOutOfBoundsException- if the index is negative or the write would exceed capacity.
 
 - 
setCharProtonBuffer setChar(int index, int value) Sets the char value at the given write index in this buffer's backing data store.- 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.
- Throws:
- java.lang.IndexOutOfBoundsException- if the index is negative or the write would exceed capacity.
 
 - 
setShortProtonBuffer setShort(int index, int value) Sets the short value at the given write index in this buffer's backing data store.- 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.
- Throws:
- java.lang.IndexOutOfBoundsException- if the index is negative or the write would exceed capacity.
 
 - 
setIntProtonBuffer setInt(int index, int value) Sets the int value at the given write index in this buffer's backing data store.- 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.
- Throws:
- java.lang.IndexOutOfBoundsException- if the index is negative or the write would exceed capacity.
 
 - 
setLongProtonBuffer setLong(int index, long value) Sets the long value at the given write index in this buffer's backing data store.- 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.
- Throws:
- java.lang.IndexOutOfBoundsException- if the index is negative or the write would exceed capacity.
 
 - 
setFloatProtonBuffer setFloat(int index, float value) Sets the float value at the given write index in this buffer's backing data store.- 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.
- Throws:
- java.lang.IndexOutOfBoundsException- if the index is negative or the write would exceed capacity.
 
 - 
setDoubleProtonBuffer setDouble(int index, double value) Sets the double value at the given write index in this buffer's backing data store.- 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.
- Throws:
- java.lang.IndexOutOfBoundsException- if the index is negative or the write would exceed capacity.
 
 - 
setBytesProtonBuffer setBytes(int index, ProtonBuffer source) Transfers the specified source buffer's data to this buffer starting at the specified absoluteindexuntil the source buffer becomes unreadable. This method is basically same withsetBytes(int, ProtonBuffer, int, int), except that this method increases thereadIndexof the source buffer by the number of the transferred bytes whilesetBytes(int, ProtonBuffer, int, int)does not. This method does not modifyreadIndexorwriteIndexof the source buffer (i.e.this).- Parameters:
- index- The index in this buffer where the write operation starts.
- source- The source buffer from which the bytes are read.
- Returns:
- this buffer for chaining
- Throws:
- java.lang.IndexOutOfBoundsException- if the specified- indexis less than- 0or if- index + source.readableBytesis greater than- this.capacity
 
 - 
setBytesProtonBuffer setBytes(int index, ProtonBuffer source, int length) Transfers the specified source buffer's data to this buffer starting at the specified absoluteindex. This method is basically same withsetBytes(int, ProtonBuffer, int, int), except that this method increases thereadIndexof the source buffer by the number of the transferred bytes whilesetBytes(int, ProtonBuffer, int, int)does not. This method does not modifyreadIndexorwriteIndexof the source buffer (i.e.this).- Parameters:
- index- The index in this buffer where the write operation starts.
- source- The source buffer from which the bytes are read.
- length- The number of bytes to transfer
- Returns:
- this buffer for chaining
- Throws:
- java.lang.IndexOutOfBoundsException- if the specified- indexis less than- 0, if- index + lengthis greater than- this.capacity, or if- lengthis greater than- source.readableBytes
 
 - 
setBytesProtonBuffer setBytes(int index, ProtonBuffer source, int offset, int length) Transfers the specified source buffer's data to this buffer starting at the specified absoluteindex. This method does not modifyreadIndexorwriteIndexof both the source (i.e.this) and the destination.- Parameters:
- index- The index in this buffer where the write operation starts.
- source- The source buffer from which the bytes are read.
- offset- The offset into the source where the set begins.
- length- The number of bytes to transfer
- Returns:
- this buffer for chaining
- Throws:
- java.lang.IndexOutOfBoundsException- if the specified- indexis less than- 0, if the specified- sourceIndexis less than- 0, if- index + lengthis greater than- this.capacity, or if- sourceIndex + lengthis greater than- source.capacity
 
 - 
setBytesProtonBuffer setBytes(int index, byte[] source) Transfers the specified source array's data to this buffer starting at the specified absoluteindex. This method does not modifyreadIndexorwriteIndexof this buffer.- Parameters:
- index- The index in this buffer where the write operation starts.
- source- The source buffer from which the bytes are read.
- Returns:
- this buffer for chaining
- Throws:
- java.lang.IndexOutOfBoundsException- if the specified- indexis less than- 0or if- index + source.lengthis greater than- this.capacity
 
 - 
setBytesProtonBuffer setBytes(int index, byte[] source, int offset, int length) Transfers the specified source array's data to this buffer starting at the specified absoluteindex. This method does not modifyreadIndexorwriteIndexof this buffer.- Parameters:
- index- The index in this buffer where the write operation starts.
- source- The source buffer from which the bytes are read.
- offset- The offset into the source where the set begins.
- length- The number of bytes to transfer
- Returns:
- this buffer for chaining
- Throws:
- java.lang.IndexOutOfBoundsException- if the specified- indexis less than- 0, if the specified- offsetis less than- 0, if- index + lengthis greater than- this.capacity, or if- offset + lengthis greater than- source.length
 
 - 
setBytesProtonBuffer setBytes(int index, java.nio.ByteBuffer source) Transfers the specified source buffer's data to this buffer starting at the specified absoluteindexuntil the source buffer's position reaches its limit. This method does not modifyreadIndexorwriteIndexof this buffer.- Parameters:
- index- The index in this buffer where the write operation starts.
- source- The source buffer from which the bytes are read.
- Returns:
- this buffer for chaining
- Throws:
- java.lang.IndexOutOfBoundsException- if the specified- indexis less than- 0or if- index + source.remaining()is greater than- this.capacity
 
 - 
skipBytesProtonBuffer skipBytes(int length) Increases the currentreadIndexof this buffer by the specifiedlength.- Parameters:
- length- the number of bytes in this buffer to skip.
- Returns:
- this ProtonBuffer for chaining.
- Throws:
- java.lang.IndexOutOfBoundsException- if- lengthis greater than- this.readableBytes
 
 - 
readBytebyte readByte() Reads one byte from the buffer and advances the read index by one.- Returns:
- a single byte from the ProtonBuffer.
- Throws:
- java.lang.IndexOutOfBoundsException- if there is no readable bytes left in the buffer.
 
 - 
readBytesProtonBuffer readBytes(byte[] target) Reads bytes from this buffer and writes them into the destination byte array incrementing the read index by the value of the length of the destination array.- Parameters:
- target- The byte array to write into.
- Returns:
- this ProtonBuffer for chaining.
- Throws:
- java.lang.IndexOutOfBoundsException- if the target array is larger than the readable bytes.
 
 - 
readBytesProtonBuffer readBytes(byte[] target, int length) Reads bytes from this buffer and writes them into the destination byte array incrementing the read index by the length value passed.- Parameters:
- target- The byte array to write into.
- length- The number of bytes to read into the given array.
- Returns:
- this ProtonBuffer for chaining.
- Throws:
- java.lang.IndexOutOfBoundsException- if the length is larger than the readable bytes, or length is greater than the length of the target array, or length is negative.
 
 - 
readBytesProtonBuffer readBytes(byte[] target, int offset, int length) Reads bytes from this buffer and writes them into the destination byte array incrementing the read index by the length value passed, the bytes are read into the given buffer starting from the given offset value.- Parameters:
- target- The byte array to write into.
- offset- The offset into the given array where bytes are written.
- length- The number of bytes to read into the given array.
- Returns:
- this ProtonBuffer for chaining.
- Throws:
- java.lang.IndexOutOfBoundsException- if the offset is negative, or if the length is greater than the current readable bytes or if the offset + length is great than the size of the target.
 
 - 
readBytesProtonBuffer readBytes(ProtonBuffer target) Reads bytes from this buffer and writes them into the destination ProtonBuffer incrementing the read index by the value of the number of bytes written to the target. The number of bytes written will be the equal to the writable bytes of the target buffer. The write index of the target buffer will be incremented by the number of bytes written into it.- Parameters:
- target- The ProtonBuffer to write into.
- Returns:
- this ProtonBuffer for chaining.
- Throws:
- java.lang.IllegalArgumentException- if the target buffer is this buffer.
- java.lang.IndexOutOfBoundsException- if the target buffer has more writable bytes than this buffer has readable bytes.
 
 - 
readBytesProtonBuffer readBytes(ProtonBuffer target, int length) Reads bytes from this buffer and writes them into the destination ProtonBuffer incrementing the read index by the number of bytes written. The write index of the target buffer will be incremented by the number of bytes written into it.- Parameters:
- target- The ProtonBuffer to write into.
- length- The number of bytes to read into the given buffer.
- Returns:
- this ProtonBuffer for chaining.
- Throws:
- java.lang.IndexOutOfBoundsException- if the length value is greater than the readable bytes of this buffer or is greater than the writable bytes of the target buffer..
 
 - 
readBytesProtonBuffer readBytes(ProtonBuffer target, int offset, int length) Transfers this buffer's data to the specified destination starting at the currentreadIndexand increases thereadIndexby the number of the transferred bytes (=length). This method does not modify the write index of the target buffer.- Parameters:
- target- The ProtonBuffer to write into.
- offset- The offset into the given buffer where bytes are written.
- length- The number of bytes to read into the given buffer.
- Returns:
- this ProtonBuffer for chaining.
- Throws:
- java.lang.IndexOutOfBoundsException- if the offset is negative, or if the length is greater than the current readable bytes or if the offset + length is great than the size of the target.
 
 - 
readBytesProtonBuffer readBytes(java.nio.ByteBuffer destination) Transfers this buffer's data to the specified destination starting at the currentreadIndexuntil the destination's position reaches its limit, and increases thereadIndexby the number of the transferred bytes.- Parameters:
- destination- The target ByteBuffer to write into.
- Returns:
- this ProtonBuffer for chaining.
- Throws:
- java.lang.IndexOutOfBoundsException- if the destination does not have enough capacity.
 
 - 
readBooleanboolean readBoolean() Reads a boolean value from the buffer and advances the read index by one.- Returns:
- boolean value read from the buffer.
- Throws:
- java.lang.IndexOutOfBoundsException- if a value cannot be read from the buffer.
 
 - 
readShortshort readShort() Reads a short value from the buffer and advances the read index by two.- Returns:
- short value read from the buffer.
- Throws:
- java.lang.IndexOutOfBoundsException- if a value cannot be read from the buffer.
 
 - 
readIntint readInt() Reads a integer value from the buffer and advances the read index by four.- Returns:
- integer value read from the buffer.
- Throws:
- java.lang.IndexOutOfBoundsException- if a value cannot be read from the buffer.
 
 - 
readLonglong readLong() Reads a long value from the buffer and advances the read index by eight.- Returns:
- long value read from the buffer.
- Throws:
- java.lang.IndexOutOfBoundsException- if a value cannot be read from the buffer.
 
 - 
readFloatfloat readFloat() Reads a float value from the buffer and advances the read index by four.- Returns:
- float value read from the buffer.
- Throws:
- java.lang.IndexOutOfBoundsException- if a value cannot be read from the buffer.
 
 - 
readDoubledouble readDouble() Reads a double value from the buffer and advances the read index by eight.- Returns:
- double value read from the buffer.
- Throws:
- java.lang.IndexOutOfBoundsException- if a value cannot be read from the buffer.
 
 - 
isWritableboolean isWritable() - Returns:
- true if the buffer has bytes remaining between the write index and the capacity.
 
 - 
isWritableboolean isWritable(int size) Check if the requested number of bytes can be written into this buffer.- Parameters:
- size- The number writable bytes that is being checked in this buffer.
- Returns:
- true if the buffer has space left for the given number of bytes to be written.
 
 - 
writeByteProtonBuffer writeByte(int value) Writes a single byte to the buffer and advances the write index by one.- Parameters:
- value- The byte to write into the buffer.
- Returns:
- this ProtonBuffer for chaining.
- Throws:
- java.lang.IndexOutOfBoundsException- if there is no room in the buffer for this write operation.
 
 - 
writeBytesProtonBuffer writeBytes(byte[] value) Writes the contents of the given byte array into the buffer and advances the write index by the length of the given array.- Parameters:
- value- The byte array to write into the buffer.
- Returns:
- this ProtonBuffer for chaining.
- Throws:
- java.lang.IndexOutOfBoundsException- if there is no room in the buffer for this write operation.
 
 - 
writeBytesProtonBuffer writeBytes(byte[] value, int length) Writes the contents of the given byte array into the buffer and advances the write index by the length value given.- Parameters:
- value- The byte array to write into the buffer.
- length- The number of bytes to write from the given array into this buffer
- Returns:
- this ProtonBuffer for chaining.
- Throws:
- java.lang.IndexOutOfBoundsException- if there is no room in the buffer for this write operation.
 
 - 
writeBytesProtonBuffer writeBytes(byte[] value, int offset, int length) Writes the contents of the given byte array into the buffer and advances the write index by the length value given. The bytes written into this buffer are read starting at the given offset into the passed in byte array.- Parameters:
- value- The byte array to write into the buffer.
- offset- The offset into the given array to start reading from.
- length- The number of bytes to write from the given array into this buffer
- Returns:
- this ProtonBuffer for chaining.
- Throws:
- java.lang.IndexOutOfBoundsException- if there is no room in the buffer for this write operation.
 
 - 
writeBytesProtonBuffer writeBytes(ProtonBuffer source) Transfers the specified source buffer's data to this buffer starting at the currentwriteIndexuntil the source buffer becomes unreadable, and increases thewriteIndexby the number of the transferred bytes. This method is basically same withwriteBytes(ProtonBuffer, int, int), except that this method increases thereadIndexof the source buffer by the number of the transferred bytes whilewriteBytes(ProtonBuffer, int, int)does not.- Parameters:
- source- The source buffer from which the bytes are read.
- Returns:
- this ProtonBuffer for chaining.
- Throws:
- java.lang.IndexOutOfBoundsException- if- source.readableBytesis greater than- this.writableBytes
 
 - 
writeBytesProtonBuffer writeBytes(ProtonBuffer source, int length) Transfers the specified source buffer's data to this buffer starting at the currentwriteIndexand increases thewriteIndexby the number of the transferred bytes (=length). This method is basically same withwriteBytes(ProtonBuffer, int, int), except that this method increases thereadIndexof the source buffer by the number of the transferred bytes (=length) whilewriteBytes(ProtonBuffer, int, int)does not.- Parameters:
- source- The source buffer from which the bytes are read.
- length- The number of bytes to transfer
- Returns:
- this buffer for chaining
- Throws:
- java.lang.IndexOutOfBoundsException- if- lengthis greater than- this.writableBytesor if- lengthis greater then- source.readableBytes
 
 - 
writeBytesProtonBuffer writeBytes(ProtonBuffer source, int offset, int length) Transfers the specified source buffer's data to this buffer starting at the currentwriteIndexand increases thewriteIndexby the number of the transferred bytes (=length). This method does not modify the read index of the source buffer.- Parameters:
- source- The source buffer from which the bytes are read.
- offset- The offset in the source buffer to start writing into this buffer.
- length- The number of bytes to transfer
- Returns:
- this buffer for chaining
- Throws:
- java.lang.IndexOutOfBoundsException- if the specified- offsetis less than- 0, if- offset + lengthis greater than- source.capacity, or if- lengthis greater than- this.writableBytes
 
 - 
writeBytesProtonBuffer writeBytes(java.nio.ByteBuffer source) Transfers the specified source buffer's data to this buffer starting at the currentwriteIndexuntil the source buffer's position reaches its limit, and increases thewriteIndexby the number of the transferred bytes.- Parameters:
- source- The source buffer from which the bytes are read.
- Returns:
- this buffer for chaining
- Throws:
- java.lang.IndexOutOfBoundsException- if- source.remaining()is greater than- this.writableBytes
 
 - 
writeBooleanProtonBuffer writeBoolean(boolean value) Writes a single boolean to the buffer and advances the write index by one.- Parameters:
- value- The boolean to write into the buffer.
- Returns:
- this ProtonBuffer for chaining.
- Throws:
- java.lang.IndexOutOfBoundsException- if there is no room in the buffer for this write operation.
 
 - 
writeShortProtonBuffer writeShort(short value) Writes a single short to the buffer and advances the write index by two.- Parameters:
- value- The short to write into the buffer.
- Returns:
- this ProtonBuffer for chaining.
- Throws:
- java.lang.IndexOutOfBoundsException- if there is no room in the buffer for this write operation.
 
 - 
writeIntProtonBuffer writeInt(int value) Writes a single integer to the buffer and advances the write index by four.- Parameters:
- value- The integer to write into the buffer.
- Returns:
- this ProtonBuffer for chaining.
- Throws:
- java.lang.IndexOutOfBoundsException- if there is no room in the buffer for this write operation.
 
 - 
writeLongProtonBuffer writeLong(long value) Writes a single long to the buffer and advances the write index by eight.- Parameters:
- value- The long to write into the buffer.
- Returns:
- this ProtonBuffer for chaining.
- Throws:
- java.lang.IndexOutOfBoundsException- if there is no room in the buffer for this write operation.
 
 - 
writeFloatProtonBuffer writeFloat(float value) Writes a single float to the buffer and advances the write index by four.- Parameters:
- value- The float to write into the buffer.
- Returns:
- this ProtonBuffer for chaining.
- Throws:
- java.lang.IndexOutOfBoundsException- if there is no room in the buffer for this write operation.
 
 - 
writeDoubleProtonBuffer writeDouble(double value) Writes a single double to the buffer and advances the write index by eight.- Parameters:
- value- The double to write into the buffer.
- Returns:
- this ProtonBuffer for chaining.
- Throws:
- java.lang.IndexOutOfBoundsException- if there is no room in the buffer for this write operation.
 
 
- 
 
-