public interface ByteStreamWriter
The intended use case is wanting to write data to a byte array parameter that is stored off heap in a direct memory pool or in some other form that is inconvenient to assemble into a single heap-allocated buffer.
Users should write their own implementation depending on the
original data source. The driver provides a built-in implementation supporting the ByteBuffer
class, see ByteBufferByteStreamWriter
.
Intended usage is to simply pass in an instance using
PreparedStatement.setObject(int, Object)
:
int bufLength = someBufferObject.length(); preparedStatement.setObject(1, new MyByteStreamWriter(bufLength, someBufferObject));
The length must be known ahead of the stream being written to.
This provides the application more control over memory management than calling
PreparedStatement.setBinaryStream(int, InputStream)
as with the latter the
caller has no control over the buffering strategy.
Modifier and Type | Interface and Description |
---|---|
static interface |
ByteStreamWriter.ByteStreamTarget
Provides a target to write bytes to.
|
Modifier and Type | Method and Description |
---|---|
int |
getLength()
Returns the length of the stream.
|
void |
writeTo(ByteStreamWriter.ByteStreamTarget target)
Write the data to the provided
OutputStream . |
int getLength()
This must be known ahead of calling writeTo(ByteStreamTarget)
.
void writeTo(ByteStreamWriter.ByteStreamTarget target) throws IOException
OutputStream
.
Should not write more than getLength()
bytes. If attempted, the provided stream
will throw an IOException
.
target
- the stream to write the data toIOException
- if the underlying stream throws or there is some other error.Copyright © 1997-2020 PostgreSQL Global Development Group. All Rights Reserved.