org.apache.cassandra.io.util

## Class BufferedDataOutputStreamPlus

- java.lang.Object
- - java.io.OutputStream
  - - org.apache.cassandra.io.util.DataOutputStreamPlus
    - - org.apache.cassandra.io.util.BufferedDataOutputStreamPlus

All Implemented Interfaces:
  java.io.Closeable, java.io.DataOutput, java.io.Flushable, java.lang.AutoCloseable, DataOutputPlus

Direct Known Subclasses:
  DataOutputBuffer, SequentialWriter

    public class BufferedDataOutputStreamPlus
    extends DataOutputStreamPlus

An implementation of the DataOutputStreamPlus interface using a ByteBuffer to stage writes before flushing them to an underlying channel. This class is completely thread unsafe.

### Field Summary

Fields
`protected java.nio.ByteBuffer` `buffer`
`protected boolean` `strictFlushing`

### Fields inherited from class org.apache.cassandra.io.util.DataOutputStreamPlus

`channel`

### Constructor Summary

Constructors
`protected` `BufferedDataOutputStreamPlus(java.nio.ByteBuffer buffer)`
`` `BufferedDataOutputStreamPlus(java.io.FileOutputStream fos)`
`` `BufferedDataOutputStreamPlus(java.io.FileOutputStream fos, int bufferSize)`
`` `BufferedDataOutputStreamPlus(java.io.RandomAccessFile ras)`
`` `BufferedDataOutputStreamPlus(java.io.RandomAccessFile ras, int bufferSize)`
`` `BufferedDataOutputStreamPlus(java.nio.channels.WritableByteChannel wbc)`
`protected` `BufferedDataOutputStreamPlus(java.nio.channels.WritableByteChannel channel, java.nio.ByteBuffer buffer)`
`` `BufferedDataOutputStreamPlus(java.nio.channels.WritableByteChannel wbc, int bufferSize)`

### Method Summary

All Methods Instance Methods Concrete Methods
`<R> R` `applyToChannel(com.google.common.base.Function<java.nio.channels.WritableByteChannel,R> f)` Safe way to operate against the underlying channel.
`void` `close()`
`protected void` `doFlush(int count)`
`void` `flush()`
`BufferedDataOutputStreamPlus` `order(java.nio.ByteOrder order)`
`void` `write(byte[] b)`
`void` `write(byte[] b, int off, int len)`
`void` `write(java.nio.ByteBuffer toWrite)`
`void` `write(int b)`
`void` `write(Memory memory, long offset, long length)`
`void` `writeBoolean(boolean v)`
`void` `writeByte(int v)`
`void` `writeBytes(java.lang.String s)`
`void` `writeChar(int v)`
`void` `writeChars(java.lang.String s)`
`void` `writeDouble(double v)`
`void` `writeFloat(float v)`
`void` `writeInt(int v)`
`void` `writeLong(long v)`
`void` `writeShort(int v)`
`void` `writeUnsignedVInt(long value)` This is more efficient for storing unsigned values, both in storage and CPU burden.
`void` `writeUTF(java.lang.String s)`
`void` `writeVInt(long value)`

### Methods inherited from class org.apache.cassandra.io.util.DataOutputStreamPlus

`newDefaultChannel, retrieveTemporaryBuffer`

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

### Methods inherited from interface org.apache.cassandra.io.util.DataOutputPlus

`hasPosition, position`

### Field Detail

#### buffer

    protected java.nio.ByteBuffer buffer

#### strictFlushing

    protected boolean strictFlushing

### Constructor Detail

#### BufferedDataOutputStreamPlus

    public BufferedDataOutputStreamPlus(java.io.RandomAccessFile ras)

#### BufferedDataOutputStreamPlus

    public BufferedDataOutputStreamPlus(java.io.RandomAccessFile ras,
                                        int bufferSize)

#### BufferedDataOutputStreamPlus

    public BufferedDataOutputStreamPlus(java.io.FileOutputStream fos)

#### BufferedDataOutputStreamPlus

    public BufferedDataOutputStreamPlus(java.io.FileOutputStream fos,
                                        int bufferSize)

#### BufferedDataOutputStreamPlus

    public BufferedDataOutputStreamPlus(java.nio.channels.WritableByteChannel wbc)

#### BufferedDataOutputStreamPlus

    public BufferedDataOutputStreamPlus(java.nio.channels.WritableByteChannel wbc,
                                        int bufferSize)

#### BufferedDataOutputStreamPlus

    protected BufferedDataOutputStreamPlus(java.nio.channels.WritableByteChannel channel,
                                           java.nio.ByteBuffer buffer)

#### BufferedDataOutputStreamPlus

    protected BufferedDataOutputStreamPlus(java.nio.ByteBuffer buffer)

### Method Detail

#### write

    public void write(byte[] b)
               throws java.io.IOException

Specified by:
  `write` in interface `java.io.DataOutput`
Overrides:
  `write` in class `java.io.OutputStream`
Throws:
  `java.io.IOException`

#### write

    public void write(byte[] b,
                      int off,
                      int len)
               throws java.io.IOException

Specified by:
  `write` in interface `java.io.DataOutput`
Overrides:
  `write` in class `java.io.OutputStream`
Throws:
  `java.io.IOException`

#### write

    public void write(java.nio.ByteBuffer toWrite)
               throws java.io.IOException

Throws:
  `java.io.IOException`

#### write

    public void write(int b)
               throws java.io.IOException

Specified by:
  `write` in interface `java.io.DataOutput`
Specified by:
  `write` in class `java.io.OutputStream`
Throws:
  `java.io.IOException`

#### writeBoolean

    public void writeBoolean(boolean v)
                      throws java.io.IOException

Throws:
  `java.io.IOException`

#### writeByte

    public void writeByte(int v)
                   throws java.io.IOException

Throws:
  `java.io.IOException`

#### writeShort

    public void writeShort(int v)
                    throws java.io.IOException

Throws:
  `java.io.IOException`

#### writeChar

    public void writeChar(int v)
                   throws java.io.IOException

Throws:
  `java.io.IOException`

#### writeInt

    public void writeInt(int v)
                  throws java.io.IOException

Throws:
  `java.io.IOException`

#### writeLong

    public void writeLong(long v)
                   throws java.io.IOException

Throws:
  `java.io.IOException`

#### writeVInt

    public void writeVInt(long value)
                   throws java.io.IOException

Throws:
  `java.io.IOException`

#### writeUnsignedVInt

    public void writeUnsignedVInt(long value)
                           throws java.io.IOException

Description copied from interface: `DataOutputPlus`
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:
  `java.io.IOException`

#### writeFloat

    public void writeFloat(float v)
                    throws java.io.IOException

Throws:
  `java.io.IOException`

#### writeDouble

    public void writeDouble(double v)
                     throws java.io.IOException

Throws:
  `java.io.IOException`

#### writeBytes

    public void writeBytes(java.lang.String s)
                    throws java.io.IOException

Throws:
  `java.io.IOException`

#### writeChars

    public void writeChars(java.lang.String s)
                    throws java.io.IOException

Throws:
  `java.io.IOException`

#### writeUTF

    public void writeUTF(java.lang.String s)
                  throws java.io.IOException

Throws:
  `java.io.IOException`

#### write

    public void write(Memory memory,
                      long offset,
                      long length)
               throws java.io.IOException

Throws:
  `java.io.IOException`

#### doFlush

    @DontInline
    protected void doFlush(int count)
                                throws java.io.IOException

Throws:
  `java.io.IOException`

#### flush

    public void flush()
               throws java.io.IOException

Specified by:
  `flush` in interface `java.io.Flushable`
Overrides:
  `flush` in class `java.io.OutputStream`
Throws:
  `java.io.IOException`

#### close

    public void close()
               throws java.io.IOException

Specified by:
  `close` in interface `java.io.Closeable`
Specified by:
  `close` in interface `java.lang.AutoCloseable`
Overrides:
  `close` in class `java.io.OutputStream`
Throws:
  `java.io.IOException`

#### applyToChannel

    public <R> R applyToChannel(com.google.common.base.Function<java.nio.channels.WritableByteChannel,R> f)
                         throws java.io.IOException

Description copied from interface: `DataOutputPlus`
Safe way to operate against the underlying channel. Impossible to stash a reference to the channel and forget to flush

Throws:
  `java.io.IOException`

#### order

    public BufferedDataOutputStreamPlus order(java.nio.ByteOrder order)