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 Description ByteOutput()
-
Method Summary
All Methods Instance Methods Abstract Methods Modifier and Type Method 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
-
-