@ExperimentalApi public abstract class ByteOutput extends java.lang.Object
Traditional write operations: (as defined by OutputStream
) where the
target method is responsible for either copying the data or completing the write before returning
from the method call.
Lazy write operations: where the caller guarantees that it will never modify the provided buffer and it can therefore be considered immutable. The target method is free to maintain a reference to the buffer beyond the scope of the method call (e.g. until the write operation completes).
Constructor and Description |
---|
ByteOutput() |
Modifier and Type | Method and Description |
---|---|
abstract void |
write(byte value)
Writes a single byte.
|
abstract void |
write(byte[] value,
int offset,
int length)
Writes a sequence of bytes.
|
abstract void |
write(java.nio.ByteBuffer value)
Writes a sequence of bytes.
|
abstract void |
writeLazy(byte[] value,
int offset,
int length)
Writes a sequence of bytes.
|
abstract void |
writeLazy(java.nio.ByteBuffer value)
Writes a sequence of bytes.
|
public abstract void write(byte value) throws java.io.IOException
value
- the byte to be writtenjava.io.IOException
- thrown if an error occurred while writingpublic abstract void write(byte[] value, int offset, int length) throws java.io.IOException
ByteOutput
must copy value
if it will not be
processed prior to the return of this method call, since value
may be reused/altered by
the caller.
NOTE: This method MUST NOT modify the value
. Doing so is a
programming error and will lead to data corruption which will be difficult to debug.
value
- the bytes to be writtenoffset
- the offset of the start of the writable rangelength
- the number of bytes to write starting from offset
java.io.IOException
- thrown if an error occurred while writingpublic abstract void writeLazy(byte[] value, int offset, int length) throws java.io.IOException
ByteOutput
is free to retain a reference to the value
beyond the scope of this method call (e.g. write later) since it is considered immutable and is
guaranteed not to change by the caller.
NOTE: This method MUST NOT modify the value
. Doing so is a
programming error and will lead to data corruption which will be difficult to debug.
value
- the bytes to be writtenoffset
- the offset of the start of the writable rangelength
- the number of bytes to write starting from offset
java.io.IOException
- thrown if an error occurred while writingpublic abstract void write(java.nio.ByteBuffer value) throws java.io.IOException
ByteOutput
must copy value
if it will not be
processed prior to the return of this method call, since value
may be reused/altered by
the caller.
NOTE: This method MUST NOT modify the value
. Doing so is a
programming error and will lead to data corruption which will be difficult to debug.
value
- the bytes to be written. Upon returning from this call, the position
of
this buffer will be set to the limit
java.io.IOException
- thrown if an error occurred while writingpublic abstract void writeLazy(java.nio.ByteBuffer value) throws java.io.IOException
ByteOutput
is free to retain a reference to the value
beyond the scope of this method call (e.g. write later) since it is considered immutable and is
guaranteed not to change by the caller.
NOTE: This method MUST NOT modify the value
. Doing so is a
programming error and will lead to data corruption which will be difficult to debug.
value
- the bytes to be written. Upon returning from this call, the position
of
this buffer will be set to the limit
java.io.IOException
- thrown if an error occurred while writing