org.firebirdsql.gds.ng.wire

## Interface ProtocolDescriptor

- All Known Implementing Classes:
    AbstractProtocolDescriptor, Version10Descriptor, Version11Descriptor, Version12Descriptor, Version13Descriptor

      public interface ProtocolDescriptor

  Descriptor of protocol information.

  The driver maintains a list of default protocol descriptors that are loaded using a `ServiceLoader` from the file `META-INF/services/org.firebirdsql.gds.ng.wire.ProtocolDescriptor`

  Protocol descriptors loaded this way are required to adhere to the following rules:

  - They provide a no-arg constructor
  - All instances of a specific implementation class created with the no-arg constructor have the same `Object.hashCode()`.
  - All instances of a specific implementation class created with the no-arg constructor are considered equal to each other by the `Object.equals(Object)` implementation
  Since:
    3.0
  Author:
    Mark Rotteveel

- - ### Method Summary

    All Methods Instance Methods Abstract Methods
    Modifier and Type | Method and Description
    --- | ---
    `FbWireAsynchronousChannel` | `createAsynchronousChannel(FbWireDatabase database)` Create a disconnected asynchronous channel.
    `ServiceParameterBuffer` | `createAttachServiceParameterBuffer(WireServiceConnection connection)` Create an attach `ServiceParameterBuffer` implementation and populate it with supported properties for this protocol version.
    `BlrCalculator` | `createBlrCalculator(FbWireDatabase database)` Create `BlrCalculator` implementation for this protocol version.
    `FbWireDatabase` | `createDatabase(WireDatabaseConnection connection)` Create `FbWireDatabase` implementation for this protocol.
    `DatabaseParameterBuffer` | `createDatabaseParameterBuffer(WireDatabaseConnection connection)` Create `DatabaseParameterBuffer` implementation and populate it with supported properties for this protocol version.
    `FbWireBlob` | `createInputBlob(FbWireDatabase database, FbWireTransaction transaction, BlobParameterBuffer blobParameterBuffer, long blobId)` Create an input `FbWireBlob` implementation for this protocol version.
    `FbWireBlob` | `createOutputBlob(FbWireDatabase database, FbWireTransaction transaction, BlobParameterBuffer blobParameterBuffer)` Create an output `FbWireBlob` implementation for this protocol version.
    `FbWireService` | `createService(WireServiceConnection connection)` Create `FbWireService` implementation for this protocol.
    `ServiceParameterBuffer` | `createServiceParameterBuffer(WireServiceConnection connection)` Creates a normal `ServiceParameterBuffer`.
    `ServiceRequestBuffer` | `createServiceRequestBuffer(WireServiceConnection connection)`
    `FbWireStatement` | `createStatement(FbWireDatabase database)` Create `FbStatement` implementation for this protocol.
    `FbWireTransaction` | `createTransaction(FbWireDatabase database, int transactionHandle, TransactionState initialState)` Create `FbTransaction` implementation for this protocol.
    `FbWireOperations` | `createWireOperations(WireConnection<?,?> connection, WarningMessageCallback defaultWarningMessageCallback, java.lang.Object syncObject)` Create an `FbWireOperations` implementation for this protocol version.
    `int` | `getArchitecture()`
    `int` | `getMaximumType()`
    `int` | `getMinimumType()`
    `int` | `getVersion()`
    `int` | `getWeight()`

- - ### Method Detail

    - #### getVersion

          int getVersion()

      Returns:
        The protocol version

    - #### getArchitecture

          int getArchitecture()

      Returns:
        Protocol architecture

    - #### getMinimumType

          int getMinimumType()

      Returns:
        Minimum supported protocol type

    - #### getMaximumType

          int getMaximumType()

      Returns:
        Maximum supported protocol type

    - #### getWeight

          int getWeight()

      Returns:
        Preference weight

    - #### createDatabase

          FbWireDatabase createDatabase(WireDatabaseConnection connection)

      Create `FbWireDatabase` implementation for this protocol.
      Parameters:
        `connection` - WireDatabaseConnection to this database
      Returns:
        FbWireDatabase implementation

    - #### createService

          FbWireService createService(WireServiceConnection connection)

      Create `FbWireService` implementation for this protocol.
      Parameters:
        `connection` - WireServiceConnection to this service
      Returns:
        FbWireService implementation

    - #### createTransaction

          FbWireTransaction createTransaction(FbWireDatabase database,
                                              int transactionHandle,
                                              TransactionState initialState)

      Create `FbTransaction` implementation for this protocol.
      Parameters:
        `database` - FbWireDatabase of the current database
        `transactionHandle` - Transaction handle
        `initialState` - Initial transaction state (either `TransactionState.ACTIVE` or `TransactionState.PREPARED`).
      Returns:
        FbTransaction implementation

    - #### createStatement

          FbWireStatement createStatement(FbWireDatabase database)

      Create `FbStatement` implementation for this protocol.
      Parameters:
        `database` - FbWireDatabase of the current database
      Returns:
        FbStatement implementation

    - #### createDatabaseParameterBuffer

          DatabaseParameterBuffer createDatabaseParameterBuffer(WireDatabaseConnection connection)
                                                         throws java.sql.SQLException

      Create `DatabaseParameterBuffer` implementation and populate it with supported properties for this protocol version.
      Parameters:
        `connection` - Connection
      Returns:
        DatabaseParameterBuffer implementation
      Throws:
        `java.sql.SQLException`

    - #### createAttachServiceParameterBuffer

          ServiceParameterBuffer createAttachServiceParameterBuffer(WireServiceConnection connection)
                                                             throws java.sql.SQLException

      Create an attach `ServiceParameterBuffer` implementation and populate it with supported properties for this protocol version.
      Parameters:
        `connection` - Connection
      Returns:
        ServiceParameterBuffer implementation for attach
      Throws:
        `java.sql.SQLException`

    - #### createServiceParameterBuffer

          ServiceParameterBuffer createServiceParameterBuffer(WireServiceConnection connection)

      Creates a normal `ServiceParameterBuffer`.
      Parameters:
        `connection` - Connection
      Returns:
        ServiceParameterBuffer implementation

    - #### createServiceRequestBuffer

          ServiceRequestBuffer createServiceRequestBuffer(WireServiceConnection connection)

      Returns:
        An empty service request buffer

    - #### createBlrCalculator

          BlrCalculator createBlrCalculator(FbWireDatabase database)

      Create `BlrCalculator` implementation for this protocol version.
      Parameters:
        `database` - FbWireDatabase of the current database
      Returns:
        BlrCalculator implementation

    - #### createOutputBlob

          FbWireBlob createOutputBlob(FbWireDatabase database,
                                      FbWireTransaction transaction,
                                      BlobParameterBuffer blobParameterBuffer)

      Create an output `FbWireBlob` implementation for this protocol version.
      Parameters:
        `database` - FbWireDatabase of the current database
        `transaction` - FbWireTransaction to associate with the blob
        `blobParameterBuffer` - Blob Parameter Buffer
      Returns:
        FbWireBlob implementation

    - #### createInputBlob

          FbWireBlob createInputBlob(FbWireDatabase database,
                                     FbWireTransaction transaction,
                                     BlobParameterBuffer blobParameterBuffer,
                                     long blobId)

      Create an input `FbWireBlob` implementation for this protocol version.
      Parameters:
        `database` - FbWireDatabase of the current database
        `transaction` - FbWireTransaction to associate with the blob
        `blobParameterBuffer` - Blob Parameter Buffer
        `blobId` - Blob Id (must be non-zero for input blob)
      Returns:
        FbWireBlob implementation

    - #### createAsynchronousChannel

          FbWireAsynchronousChannel createAsynchronousChannel(FbWireDatabase database)

      Create a disconnected asynchronous channel.
      Parameters:
        `database` - The parent database handle.
      Returns:
        Asynchronous channel implementation

    - #### createWireOperations

          FbWireOperations createWireOperations(WireConnection<?,?> connection,
                                                WarningMessageCallback defaultWarningMessageCallback,
                                                java.lang.Object syncObject)

      Create an `FbWireOperations` implementation for this protocol version.
      Parameters:
        `connection` - WireConnection instance
        `defaultWarningMessageCallback` - Default warning message callback
        `syncObject` - Object to use for synchronization
      Returns:
        Wire operations implementation

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