- All Known Implementing Classes:
AbstractProtocolDescriptor
,Version10Descriptor
,Version11Descriptor
,Version12Descriptor
,Version13Descriptor
,Version15Descriptor
,Version16Descriptor
,Version18Descriptor
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
Modifier and TypeMethodDescriptioncreateAsynchronousChannel
(FbWireDatabase database) Create a disconnected asynchronous channel.Create an attachServiceParameterBuffer
implementation and populate it with supported properties for this protocol version.createBlrCalculator
(FbWireDatabase database) CreateBlrCalculator
implementation for this protocol version.createDatabase
(WireDatabaseConnection connection) CreateFbWireDatabase
implementation for this protocol.createDatabaseParameterBuffer
(WireDatabaseConnection connection) CreateDatabaseParameterBuffer
implementation and populate it with supported properties for this protocol version.createInputBlob
(FbWireDatabase database, FbWireTransaction transaction, BlobParameterBuffer blobParameterBuffer, long blobId) Create an inputFbWireBlob
implementation for this protocol version.createOutputBlob
(FbWireDatabase database, FbWireTransaction transaction, BlobParameterBuffer blobParameterBuffer) Create an outputFbWireBlob
implementation for this protocol version.createService
(WireServiceConnection connection) CreateFbWireService
implementation for this protocol.createServiceParameterBuffer
(WireServiceConnection connection) Creates a normalServiceParameterBuffer
.createServiceRequestBuffer
(WireServiceConnection connection) createStatement
(FbWireDatabase database) CreateFbStatement
implementation for this protocol.createTransaction
(FbWireDatabase database, int transactionHandle, TransactionState initialState) CreateFbTransaction
implementation for this protocol.createWireOperations
(WireConnection<?, ?> connection, WarningMessageCallback defaultWarningMessageCallback) Create anFbWireOperations
implementation for this protocol version.int
int
int
int
int
boolean
-
Method Details
-
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
-
supportsWireCompression
boolean supportsWireCompression()- Returns:
true
when zlib wire compression is supported
-
getWeight
int getWeight()- Returns:
- Preference weight
-
createDatabase
CreateFbWireDatabase
implementation for this protocol.- Parameters:
connection
- WireDatabaseConnection to this database- Returns:
- FbWireDatabase implementation
-
createService
CreateFbWireService
implementation for this protocol.- Parameters:
connection
- WireServiceConnection to this service- Returns:
- FbWireService implementation
-
createTransaction
FbWireTransaction createTransaction(FbWireDatabase database, int transactionHandle, TransactionState initialState) CreateFbTransaction
implementation for this protocol.- Parameters:
database
- FbWireDatabase of the current databasetransactionHandle
- Transaction handleinitialState
- Initial transaction state (eitherTransactionState.ACTIVE
orTransactionState.PREPARED
).- Returns:
- FbTransaction implementation
-
createStatement
CreateFbStatement
implementation for this protocol.- Parameters:
database
- FbWireDatabase of the current database- Returns:
- FbStatement implementation
-
createDatabaseParameterBuffer
DatabaseParameterBuffer createDatabaseParameterBuffer(WireDatabaseConnection connection) throws SQLException CreateDatabaseParameterBuffer
implementation and populate it with supported properties for this protocol version.- Parameters:
connection
- Connection- Returns:
- DatabaseParameterBuffer implementation
- Throws:
SQLException
-
createAttachServiceParameterBuffer
ServiceParameterBuffer createAttachServiceParameterBuffer(WireServiceConnection connection) throws SQLException Create an attachServiceParameterBuffer
implementation and populate it with supported properties for this protocol version.- Parameters:
connection
- Connection- Returns:
- ServiceParameterBuffer implementation for attach
- Throws:
SQLException
-
createServiceParameterBuffer
Creates a normalServiceParameterBuffer
.- Parameters:
connection
- Connection- Returns:
- ServiceParameterBuffer implementation
-
createServiceRequestBuffer
- Returns:
- An empty service request buffer
-
createBlrCalculator
CreateBlrCalculator
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 outputFbWireBlob
implementation for this protocol version.- Parameters:
database
- FbWireDatabase of the current databasetransaction
- FbWireTransaction to associate with the blobblobParameterBuffer
- Blob Parameter Buffer- Returns:
- FbWireBlob implementation
-
createInputBlob
FbWireBlob createInputBlob(FbWireDatabase database, FbWireTransaction transaction, BlobParameterBuffer blobParameterBuffer, long blobId) Create an inputFbWireBlob
implementation for this protocol version.- Parameters:
database
- FbWireDatabase of the current databasetransaction
- FbWireTransaction to associate with the blobblobParameterBuffer
- Blob Parameter BufferblobId
- Blob Id (must be non-zero for input blob)- Returns:
- FbWireBlob implementation
-
createAsynchronousChannel
Create a disconnected asynchronous channel.- Parameters:
database
- The parent database handle.- Returns:
- Asynchronous channel implementation
-
createWireOperations
FbWireOperations createWireOperations(WireConnection<?, ?> connection, WarningMessageCallback defaultWarningMessageCallback) Create anFbWireOperations
implementation for this protocol version.- Parameters:
connection
- WireConnection instance (non-null
)defaultWarningMessageCallback
- default warning message callback (non-null
)- Returns:
- Wire operations implementation
-