Package org.firebirdsql.gds.ng.wire.version10

## Class V10OutputBlob

- java.lang.Object
- - org.firebirdsql.gds.ng.AbstractFbBlob
  - - org.firebirdsql.gds.ng.wire.AbstractFbWireBlob
    - - org.firebirdsql.gds.ng.wire.AbstractFbWireOutputBlob
      - - org.firebirdsql.gds.ng.wire.version10.V10OutputBlob

All Implemented Interfaces:
  `java.lang.AutoCloseable`, `FbBlob`, `DatabaseListener`, `ExceptionListenable`, `TransactionListener`, `FbWireBlob`

    public class V10OutputBlob
    extends AbstractFbWireOutputBlob
    implements FbWireBlob, DatabaseListener

Since:
  3.0
Author:
  Mark Rotteveel

### Nested Class Summary

### Nested classes/interfaces inherited from interface org.firebirdsql.gds.ng.FbBlob

`FbBlob.SeekMode`

### Field Summary

### Fields inherited from class org.firebirdsql.gds.ng.AbstractFbBlob

`exceptionListenerDispatcher`

### Fields inherited from interface org.firebirdsql.gds.ng.FbBlob

`NO_BLOB_ID`

### Constructor Summary

Constructors
`V10OutputBlob​(FbWireDatabase database, FbWireTransaction transaction, BlobParameterBuffer blobParameterBuffer)`

### Method Summary

All Methods Instance Methods Concrete Methods
`void` `open()` Opens an existing input blob, or creates an output blob.
`void` `putSegment​(byte[] segment)` Writes a segment of blob data.

### Methods inherited from class org.firebirdsql.gds.ng.wire.AbstractFbWireOutputBlob

`getBlobId, getSegment, isOutput, seek, setBlobId`

### Methods inherited from class org.firebirdsql.gds.ng.wire.AbstractFbWireBlob

`cancelImpl, closeImpl, getBlobInfo, getDatabase, getHandle, releaseBlob, releaseResources, setHandle`

### Methods inherited from class org.firebirdsql.gds.ng.AbstractFbBlob

`addExceptionListener, cancel, checkBlobClosed, checkBlobOpen, checkDatabaseAttached, checkTransactionActive, clearDatabase, clearTransaction, close, createBlobLengthProcessor, detached, detaching, getBlobInfo, getBlobParameterBuffer, getMaximumSegmentSize, getTransaction, isEndingTransaction, isEof, isOpen, length, removeExceptionListener, resetEof, setEof, setOpen, transactionStateChanged, warningReceived, withLock`

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

### Methods inherited from interface org.firebirdsql.gds.ng.listeners.DatabaseListener

`detached, detaching, warningReceived`

### Methods inherited from interface org.firebirdsql.gds.ng.listeners.ExceptionListenable

`addExceptionListener, removeExceptionListener`

### Methods inherited from interface org.firebirdsql.gds.ng.FbBlob

`cancel, close, getBlobId, getBlobInfo, getBlobInfo, getDatabase, getHandle, getMaximumSegmentSize, getSegment, isEof, isOpen, isOutput, length, seek`

### Constructor Detail

#### V10OutputBlob

    public V10OutputBlob​(FbWireDatabase database,
                         FbWireTransaction transaction,
                         BlobParameterBuffer blobParameterBuffer)

### Method Detail

#### open

    public void open()
              throws java.sql.SQLException

Description copied from interface: `FbBlob`
Opens an existing input blob, or creates an output blob.

Specified by:
  `open` in interface `FbBlob`
Throws:
  `java.sql.SQLException` - If the blob is already open, this is a (closed) output blob and it already has a blobId, the transaction is not active, or a database connection error occurred

#### putSegment

    public void putSegment​(byte[] segment)
                    throws java.sql.SQLException

Description copied from interface: `FbBlob`
Writes a segment of blob data.

Implementation must handle segment length exceeding `FbBlob.getMaximumSegmentSize()` by batching. TODO: reconsider and let caller handle that?

Passing a section that is length 0 will throw an `SQLException`.

Specified by:
  `putSegment` in interface `FbBlob`
Parameters:
  `segment` - Segment to write
Throws:
  `java.sql.SQLException` - If this is an input blob, the blob is closed, the transaction is not active, the segment is length 0 or longer than the maximum segment size, or a database connection error occurred.