@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 offsetjava.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 offsetjava.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 limitjava.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 limitjava.io.IOException - thrown if an error occurred while writing