org.firebirdsql.gds.ng.wire

## Class AbstractFbWireInputBlob

- java.lang.Object
- - org.firebirdsql.gds.ng.AbstractFbBlob
  - - org.firebirdsql.gds.ng.wire.AbstractFbWireBlob
    - - org.firebirdsql.gds.ng.wire.AbstractFbWireInputBlob

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

Direct Known Subclasses:
  V10InputBlob

    public abstract class AbstractFbWireInputBlob
    extends AbstractFbWireBlob

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
`protected` `AbstractFbWireInputBlob(FbWireDatabase database, FbWireTransaction transaction, BlobParameterBuffer blobParameterBuffer, long blobId)`

### Method Summary

All Methods Instance Methods Concrete Methods
`long` `getBlobId()`
`boolean` `isOutput()`
`void` `putSegment(byte[] segment)` Writes a segment of blob data.

### 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, getSynchronizationObject, getTransaction, isEndingTransaction, isEof, isOpen, length, removeExceptionListener, resetEof, setEof, setOpen, transactionStateChanged, warningReceived`

### 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.FbBlob

`cancel, close, getBlobInfo, getMaximumSegmentSize, getSegment, getSynchronizationObject, isEof, isOpen, length, open, seek`

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

`addExceptionListener, removeExceptionListener`

### Constructor Detail

#### AbstractFbWireInputBlob

    protected AbstractFbWireInputBlob(FbWireDatabase database,
                                      FbWireTransaction transaction,
                                      BlobParameterBuffer blobParameterBuffer,
                                      long blobId)

### Method Detail

#### getBlobId

    public final long getBlobId()

Returns:
  The Firebird blob id

#### isOutput

    public final boolean isOutput()

Returns:
  `true` if this is an output blob (write only), `false` if this is an input blob (read only)

#### putSegment

    public final 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`.

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.