Packages

abstract class Buf extends AnyRef

Buf represents a fixed, immutable byte buffer with efficient positional access. Buffers may be sliced and concatenated, and thus be used to implement bytestreams.

Self Type
Buf
See also

com.twitter.io.Buf.Empty for an empty Buf.

com.twitter.io.Buf.apply for creating a Buf from other Bufs

com.twitter.io.Buf.ByteBuffer for an nio.ByteBuffer backed implementation.

com.twitter.io.Buf.ByteArray for an Array[Byte] backed implementation.

Linear Supertypes
Known Subclasses
Ordering
  1. Alphabetic
  2. By Inheritance
Inherited
  1. Buf
  2. AnyRef
  3. Any
  1. Hide All
  2. Show All
Visibility
  1. Public
  2. All

Instance Constructors

  1. new Buf()

Abstract Value Members

  1. abstract def get(index: Int): Byte

    Returns the byte at the given index.

  2. abstract def length: Int

    The number of bytes in the buffer

  3. abstract def process(from: Int, until: Int, processor: Processor): Int

    Process the Buf 1-byte at a time using the given Buf.Processor, starting at index from until index until.

    Process the Buf 1-byte at a time using the given Buf.Processor, starting at index from until index until. Processing will halt if the processor returns false or after processing the final byte.

    from

    the starting index, inclusive. Must be non-negative.

    until

    the ending index, exclusive. Must be non-negative.

    returns

    -1 if the processor processed all bytes or the last processed index if the processor returns false. Will return -1 if from is greater than or equal to until or length. Will return -1 if until is greater than or equal to length.

    Note

    this mimics the design of Netty 4's io.netty.buffer.ByteBuf.forEachByte

  4. abstract def slice(from: Int, until: Int): Buf

    Returns a new buffer representing a slice of this buffer, delimited by the indices from inclusive and until exclusive: [from, until).

    Returns a new buffer representing a slice of this buffer, delimited by the indices from inclusive and until exclusive: [from, until). Out of bounds indices are truncated. Negative indices are not accepted.

    Note

    Buf implementors should use the helpers Buf.checkSliceArgs, isSliceEmpty, and isSliceIdentity.

  5. abstract def unsafeByteArrayBuf: Option[ByteArray]

    Helper to support 0-copy coercion to Buf.ByteArray.

    Helper to support 0-copy coercion to Buf.ByteArray.

    Attributes
    protected
  6. abstract def write(output: ByteBuffer): Unit

    Write the entire contents of this Buf into the given nio buffer.

    Write the entire contents of this Buf into the given nio buffer. Partial writes aren't supported directly through this API; they can be accomplished by first slicing the buffer. This method should be preferred over Buf.ByteBuffer.extract, Buf.ByteArray.Owned, etc family of functions when you want to control the destination of the data, as opposed to letting the Buf implementation manage the destination. For example, if the data is destined for an IO operation, it may be preferable to provide a direct nio ByteBuffer to ensure the avoidance of intermediate heap-based representations.

    Annotations
    @throws( classOf[IllegalArgumentException] ) @throws( classOf[ReadOnlyBufferException] )
    Exceptions thrown

    ReadOnlyBufferException if the provided buffer is read-only.

    java.lang.IllegalArgumentException when output doesn't have enough space as defined by ByteBuffer.remaining() to hold the contents of this Buf.

    Note

    Buf implementors should use the helper checkWriteArgs.

    See also

    Int) for writing to byte arrays.

  7. abstract def write(output: Array[Byte], off: Int): Unit

    Write the entire contents of this Buf into the given array at the given offset.

    Write the entire contents of this Buf into the given array at the given offset. Partial writes aren't supported directly through this API; they can be accomplished by first slicing the buffer. This method should be preferred over the Buf.ByteArray.extract, Buf.ByteArray.Owned, etc family of functions when you want to control the destination of the data, as opposed to letting the Buf implementation manage the destination. For example, if you want to manually set the first bytes of an Array[Byte] and then efficiently copy the contents of this Buf to the remaining space.

    Annotations
    @throws( classOf[IllegalArgumentException] )
    Exceptions thrown

    IllegalArgumentException when output is too small to contain all the data.

    Note

    Buf implementors should use the helper checkWriteArgs.

    See also

    write(ByteBuffer) for writing to nio buffers.

Concrete Value Members

  1. final def !=(arg0: Any): Boolean
    Definition Classes
    AnyRef → Any
  2. final def ##(): Int
    Definition Classes
    AnyRef → Any
  3. final def ==(arg0: Any): Boolean
    Definition Classes
    AnyRef → Any
  4. final def asInstanceOf[T0]: T0
    Definition Classes
    Any
  5. def checkWriteArgs(outputLen: Int, outputOff: Int): Unit

    Helps implementations validate the arguments to write.

    Helps implementations validate the arguments to write.

    Attributes
    protected[this]
  6. def clone(): AnyRef
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    @native() @throws( ... )
  7. def computeHashCode: Int

    Compute the 32-bit FNV-1 hash code of this buf.

    Compute the 32-bit FNV-1 hash code of this buf.

    Attributes
    protected
  8. final def concat(right: Buf): Buf

    Concatenate this buffer with the given buffer.

  9. def copiedByteArray: Array[Byte]

    Definitely requires copying.

    Definitely requires copying.

    Attributes
    protected
  10. final def eq(arg0: AnyRef): Boolean
    Definition Classes
    AnyRef
  11. def equals(other: Any): Boolean
    Definition Classes
    Buf → AnyRef → Any
  12. def finalize(): Unit
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    @throws( classOf[java.lang.Throwable] )
  13. final def getClass(): Class[_]
    Definition Classes
    AnyRef → Any
    Annotations
    @native()
  14. final def hashCode(): Int
    Definition Classes
    Buf → AnyRef → Any
  15. def isEmpty: Boolean
  16. final def isInstanceOf[T0]: Boolean
    Definition Classes
    Any
  17. def isSliceEmpty(from: Int, until: Int): Boolean

    Helps implementations of slice.

    Helps implementations of slice.

    Attributes
    protected[this]
  18. def isSliceIdentity(from: Int, until: Int): Boolean

    Helps implementations of slice.

    Helps implementations of slice.

    Attributes
    protected[this]
  19. final def ne(arg0: AnyRef): Boolean
    Definition Classes
    AnyRef
  20. final def notify(): Unit
    Definition Classes
    AnyRef
    Annotations
    @native()
  21. final def notifyAll(): Unit
    Definition Classes
    AnyRef
    Annotations
    @native()
  22. def process(processor: Processor): Int

    Process the Buf 1-byte at a time using the given Buf.Processor, starting at index 0 until index length.

    Process the Buf 1-byte at a time using the given Buf.Processor, starting at index 0 until index length. Processing will halt if the processor returns false or after processing the final byte.

    returns

    -1 if the processor processed all bytes or the last processed index if the processor returns false.

    Note

    this mimics the design of Netty 4's io.netty.buffer.ByteBuf.forEachByte

  23. final def synchronized[T0](arg0: ⇒ T0): T0
    Definition Classes
    AnyRef
  24. def toString(): String
    Definition Classes
    AnyRef → Any
  25. def unsafeByteArray: Array[Byte]

    May require copying.

    May require copying.

    Attributes
    protected
  26. final def wait(): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  27. final def wait(arg0: Long, arg1: Int): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  28. final def wait(arg0: Long): Unit
    Definition Classes
    AnyRef
    Annotations
    @native() @throws( ... )

Inherited from AnyRef

Inherited from Any

Ungrouped