Interface DataOutputPlus

All Superinterfaces:
DataOutput
All Known Subinterfaces:
StreamingDataOutputPlus
All Known Implementing Classes:
AsyncChannelOutputPlus, AsyncMessageOutputPlus, AsyncStreamingOutputPlus, BufferedDataOutputStreamPlus, ChecksummedSequentialWriter, CompressedSequentialWriter, DataOutputBuffer, DataOutputBufferFixed, DataOutputStreamPlus, FileOutputStreamPlus, SafeMemoryWriter, SequentialWriter, StreamingDataOutputPlusFixed, UnbufferedDataOutputStreamPlus, WrappedDataOutputStreamPlus

public interface DataOutputPlus extends DataOutput
Extension to DataOutput that provides for writing ByteBuffer and Memory, potentially with an efficient implementation that is zero copy or at least has reduced bounds checking overhead.
  • Method Details

    • write

      void write(ByteBuffer buffer) throws IOException
      Throws:
      IOException
    • write

      default void write(ReadableMemory memory, long offset, long length) throws IOException
      Throws:
      IOException
    • writeVInt

      default void writeVInt(long i) throws IOException
      Throws:
      IOException
    • writeVInt

      @Deprecated(since="5.0") default void writeVInt(int i)
      Deprecated.
      See CASSANDRA-18099
    • writeVInt32

      default void writeVInt32(int i) throws IOException
      Throws:
      IOException
    • writeUnsignedVInt

      default void writeUnsignedVInt(long i) throws IOException
      This is more efficient for storing unsigned values, both in storage and CPU burden. Note that it is still possible to store negative values, they just take up more space. So this method doesn't forbid e.g. negative sentinel values in future, if they need to be snuck in. A protocol version bump can then be introduced to improve efficiency.
      Throws:
      IOException
    • writeUnsignedVInt

      @Deprecated(since="5.0") default void writeUnsignedVInt(int i)
      Deprecated.
      See CASSANDRA-18099
    • writeUnsignedVInt32

      default void writeUnsignedVInt32(int i) throws IOException
      Throws:
      IOException
    • writeMostSignificantBytes

      default void writeMostSignificantBytes(long register, int bytes) throws IOException
      An efficient way to write the type bytes of a long
      Parameters:
      register - - the long value to be written
      bytes - - the number of bytes the register occupies. Valid values are between 1 and 8 inclusive.
      Throws:
      IOException
    • position

      default long position()
      Returns the current position of the underlying target like a file-pointer or the position withing a buffer. Not every implementation may support this functionality. Whether or not this functionality is supported can be checked via the hasPosition().
      Throws:
      UnsupportedOperationException - if the implementation does not support position
    • hasPosition

      default boolean hasPosition()
      If the implementation supports providing a position, this method returns true, otherwise false.
    • maxBytesInPage

      default int maxBytesInPage()
      Returns the number of bytes that a page can take at maximum.
    • padToPageBoundary

      default void padToPageBoundary() throws IOException
      Pad this with zeroes until the next page boundary. If the destination position is already at a page boundary, do not do anything.
      Throws:
      IOException
    • bytesLeftInPage

      default int bytesLeftInPage()
      Returns how many bytes are left in the page.
    • paddedPosition

      default long paddedPosition()
      Returns the next padded position. This is either the current position (if already padded), or the start of next page.