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

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `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.listeners.ExceptionListenable

      `addExceptionListener, removeExceptionListener`

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

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

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