@ExperimentalApi public abstract class ByteOutput extends 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(ByteBuffer value)
Writes a sequence of bytes.
|
abstract void |
writeLazy(byte[] value,
int offset,
int length)
Writes a sequence of bytes.
|
abstract void |
writeLazy(ByteBuffer value)
Writes a sequence of bytes.
|
public abstract void write(byte value) throws IOException
value
- the byte to be writtenIOException
- thrown if an error occurred while writingpublic abstract void write(byte[] value, int offset, int length) throws 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
IOException
- thrown if an error occurred while writingpublic abstract void write(ByteBuffer value) throws 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
IOException
- thrown if an error occurred while writingpublic abstract void writeLazy(byte[] value, int offset, int length) throws 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
IOException
- thrown if an error occurred while writingpublic abstract void writeLazy(ByteBuffer value) throws 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
IOException
- thrown if an error occurred while writing