Module org.firebirdsql.jaybird
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:
  `AutoCloseable`, `FbBlob`, `DatabaseListener`, `ExceptionListenable`, `TransactionListener`, `FbWireBlob`

Direct Known Subclasses:
  `V11OutputBlob`

public class V10OutputBlob extends AbstractFbWireOutputBlob implements FbWireBlob, DatabaseListener
Output `FbWireBlob` implementation for the version 10 wire protocol.

Since:
  3
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
  Constructor
  Description
  `V10OutputBlob(FbWireDatabase database, FbWireTransaction transaction, BlobParameterBuffer blobParameterBuffer)`

- ## Method Summary

  Modifier and Type
  Method
  Description
  `protected void`
  `consumePutSegmentResponses(int requestCount)`
  `void`
  `open()`
  Opens an existing input blob, or creates an output blob.
  `void`
  `put(byte[] b, int off, int len)`
  Writes content of `b` starting at `off` for `length` bytes to the blob.

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

  `get, getBlobId, getSegment, isOutput, processOpenResponse, seek, setBlobId`

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

  `cancelImpl, closeImpl, getBlobInfo, getDatabase, getHandle, getXdrIn, getXdrOut, 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, getBlobInfo, getBlobParameterBuffer, getKnownBlobInfoItems, getMaximumSegmentSize, getState, getTransaction, isEndingTransaction, isEof, isOpen, length, putSegment, registerDeferredException, removeExceptionListener, resetEof, setEof, setState, throwAndClearDeferredException, transactionStateChanged, transferDeferredExceptionTo, 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, get, get, getBlobId, getBlobInfo, getBlobInfo, getDatabase, getHandle, getMaximumSegmentSize, getSegment, isEof, isOpen, isOutput, length, putSegment, seek`

- ## Constructor Details

  - ### V10OutputBlob

    public V10OutputBlob(FbWireDatabase database, FbWireTransaction transaction, BlobParameterBuffer blobParameterBuffer) throws SQLException
    Throws:
      `SQLException`

- ## Method Details

  - ### open

    public void open() throws SQLException
    Description copied from interface: `FbBlob`
    Opens an existing input blob, or creates an output blob.
    Specified by:
      `open` in interface `FbBlob`
    Throws:
      `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

  - ### put

    public void put(byte[] b, int off, int len) throws 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()`.

    Specified by:
      `put` in interface `FbBlob`
    Parameters:
      `b` - source byte array
      `off` - offset to start
      `len` - number of bytes
    Throws:
      `SQLException` - for database access errors, if `off < 0`, `len < 0`, or if `off + len > b.length`

  - ### consumePutSegmentResponses

    protected void consumePutSegmentResponses(int requestCount) throws SQLException
    Throws:
      `SQLException`