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 class org.firebirdsql.gds.ng.wire.AbstractFbWireBlob

      `AbstractFbWireBlob.BlobOpenOperation`

    - ### Nested classes/interfaces inherited from class org.firebirdsql.gds.ng.AbstractFbBlob

      `AbstractFbBlob.BlobState`

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

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `long` | `getBlobId()` Returns the blob id.
    `boolean` | `isOutput()`
    `void` | `put(byte[] b, int off, int len)` Writes content of `b` starting at `off` for `length` bytes to the blob.
    `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, getXdrIn, getXdrOut, processOpenResponse, receiveOpenResponse, releaseBlob, releaseResources, sendOpen, setHandle, wrapDeferredResponse`

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

      `addExceptionListener, cancel, checkBlobClosed, checkBlobOpen, checkDatabaseAttached, checkTransactionActive, clearDatabase, clearDeferredException, clearTransaction, close, createBlobLengthProcessor, detached, detaching, errorOccurred, get, get, get, getBlobInfo, getBlobParameterBuffer, getKnownBlobInfoItems, getMaximumSegmentSize, getState, getTransaction, isEndingTransaction, isEof, isOpen, length, registerDeferredException, removeExceptionListener, resetEof, setEof, setState, throwAndClearDeferredException, transactionStateChanged, transferDeferredExceptionTo, validateBufferLength, 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.FbBlob

      `cancel, close, get, get, getBlobInfo, getMaximumSegmentSize, getSegment, 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)
                                     throws java.sql.SQLException

      Throws:
        `java.sql.SQLException`

  - ### Method Detail

    - #### getBlobId

          public final long getBlobId()

      Description copied from interface: `FbBlob`
      Returns the blob id.

      For output blobs, this will return `FbBlob.NO_BLOB_ID` (`0L`) if the blob wasn't opened yet, or if the blob is deferred opened (client-side only). The value `FbBlob.NO_BLOB_ID` is technically invalid, but Firebird will handle it as an empty blob (both for input and output).

      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.

      Implementations must handle segment lengths exceeding `FbBlob.getMaximumSegmentSize()` by batching. This method should either call `put(segment, 0, segment.length)`, or produce the same effects as that call.

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

      Specified by:
        `putSegment` in interface `FbBlob`
      Overrides:
        `putSegment` in class `AbstractFbBlob`
      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 a database connection error occurred
      See Also:
        `FbBlob.put(byte[], int, int)`

    - #### put

          public final void put(byte[] b,
                                int off,
                                int len)
                         throws java.sql.SQLException

      Description copied from interface: `FbBlob`
      Writes content of `b` starting at `off` for `length` bytes to the blob.

      Implementations must write all bytes to the blob, using multiple round-trips if necessary.

      If the implementation cannot perform writes without additional allocation, it should use at most `DatabaseConnectionProperties.getBlobBufferSize()` as an internal buffer. If the implementation can perform writes without additional allocation, it is recommended it performs reads using (at most) `FbBlob.getMaximumSegmentSize()`.

      Parameters:
        `b` - source byte array
        `off` - offset to start
        `len` - number of bytes
      Throws:
        `java.sql.SQLException` - for database access errors, if `off < 0`, `len < 0`, or if `off + len > b.length`

Copyright © 2001-2025 Jaybird (Firebird JDBC) team. All rights reserved.