Class ByteOutput
- java.lang.Object
- com.google.protobuf.ByteOutput
- Direct Known Subclasses:
- CodedOutputStream
@ExperimentalApi public abstract class ByteOutput extends java.lang.Object
An output target for raw bytes. This interface provides semantics that support two types of writing: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 Summary
Constructors Constructor and Description ByteOutput()
Method Summary
All Methods Instance Methods Abstract Methods 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.
Method Detail
write
public abstract void write(byte value) throws java.io.IOException
Writes a single byte.- Parameters:
value
- the byte to be written- Throws:
java.io.IOException
- thrown if an error occurred while writing
write
public abstract void write(byte[] value, int offset, int length) throws java.io.IOException
Writes a sequence of bytes. TheByteOutput
must copyvalue
if it will not be processed prior to the return of this method call, sincevalue
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.- Parameters:
value
- the bytes to be writtenoffset
- the offset of the start of the writable rangelength
- the number of bytes to write starting fromoffset
- Throws:
java.io.IOException
- thrown if an error occurred while writing
writeLazy
public abstract void writeLazy(byte[] value, int offset, int length) throws java.io.IOException
Writes a sequence of bytes. TheByteOutput
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.- Parameters:
value
- the bytes to be writtenoffset
- the offset of the start of the writable rangelength
- the number of bytes to write starting fromoffset
- Throws:
java.io.IOException
- thrown if an error occurred while writing
write
public abstract void write(java.nio.ByteBuffer value) throws java.io.IOException
Writes a sequence of bytes. TheByteOutput
must copyvalue
if it will not be processed prior to the return of this method call, sincevalue
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.- Parameters:
value
- the bytes to be written. Upon returning from this call, theposition
of this buffer will be set to thelimit
- Throws:
java.io.IOException
- thrown if an error occurred while writing
writeLazy
public abstract void writeLazy(java.nio.ByteBuffer value) throws java.io.IOException
Writes a sequence of bytes. TheByteOutput
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.- Parameters:
value
- the bytes to be written. Upon returning from this call, theposition
of this buffer will be set to thelimit
- Throws:
java.io.IOException
- thrown if an error occurred while writing