org.firebirdsql.gds.ng.wire

## Class AbstractFbWireOutputBlob

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

- All Implemented Interfaces:
    java.lang.AutoCloseable, FbBlob, DatabaseListener, ExceptionListenable, TransactionListener, FbWireBlob
  Direct Known Subclasses:
    V10OutputBlob

      public abstract class AbstractFbWireOutputBlob
      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 and Description
    --- | ---
    `protected` | `AbstractFbWireOutputBlob(FbWireDatabase database, FbWireTransaction transaction, BlobParameterBuffer blobParameterBuffer)`

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `long` | `getBlobId()`
    `byte[]` | `getSegment(int sizeRequested)` Gets a segment of blob data.
    `boolean` | `isOutput()`
    `void` | `seek(int offset, FbBlob.SeekMode seekMode)` Performs a seek on a blob with the specified `seekMode` and `offset`.
    `protected void` | `setBlobId(long blobId)` Sets the blob id.

    - ### 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, getSynchronizationObject, isEof, isOpen, length, open, putSegment`

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

      `addExceptionListener, removeExceptionListener`

- - ### Constructor Detail

    - #### AbstractFbWireOutputBlob

          protected AbstractFbWireOutputBlob(FbWireDatabase database,
                                  FbWireTransaction transaction,
                                  BlobParameterBuffer blobParameterBuffer)

  - ### Method Detail

    - #### getBlobId

          public final long getBlobId()

      Returns:
        The Firebird blob id

    - #### setBlobId

          protected final void setBlobId(long blobId)
                                  throws java.sql.SQLException

      Sets the blob id.
      Parameters:
        `blobId` - Blob id.
      Throws:
        `java.sql.SQLException` - If this is an input blob, or if this is an output blob whose blobId was already set.

    - #### isOutput

          public final boolean isOutput()

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

    - #### getSegment

          public final byte[] getSegment(int sizeRequested)
                                  throws java.sql.SQLException

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

      When `sizeRequested` exceeds `FbBlob.getMaximumSegmentSize()` it is silently reduced to the maximum segment size.

      TODO: Consider allowing this and have the implementation handle longer segments by sending multiple (batched?) requests.
      Parameters:
        `sizeRequested` - Requested segment size (> 0).
      Returns:
        Retrieved segment (size may be less than requested)
      Throws:
        `java.sql.SQLException` - If this is an output blob, the blob is closed, the transaction is not active, or a database connection error occurred.

    - #### seek

          public final void seek(int offset,
                  FbBlob.SeekMode seekMode)
                          throws java.sql.SQLException

      Description copied from interface: `FbBlob`
      Performs a seek on a blob with the specified `seekMode` and `offset`.

      Firebird only supports seek on stream blobs.

      Parameters:
        `offset` - Offset of the seek, effect depends on value of `seekMode`
        `seekMode` - Value of `FbBlob.SeekMode`
      Throws:
        `java.sql.SQLException` - If the blob is closed, the transaction is not active, or a database error occurred.

Copyright © 2001-2021 Jaybird (Firebird JDBC/JCA) team. All rights reserved.