Interface FbWireOperations
-
- All Known Implementing Classes:
AbstractWireOperations
,V10WireOperations
,V11WireOperations
,V13WireOperations
,V15WireOperations
,V16WireOperations
public interface FbWireOperations
Common connection operations shared by database and service handles- Since:
- 3.0
- Author:
- Mark Rotteveel
-
-
Nested Class Summary
Nested Classes Modifier and Type Interface Description static interface
FbWireOperations.ProcessAttachCallback
-
Method Summary
All Methods Instance Methods Abstract Methods Default Methods Modifier and Type Method Description void
authReceiveResponse(FbWireAttachment.AcceptPacket acceptPacket, DbCryptCallback dbCryptCallback, FbWireOperations.ProcessAttachCallback processAttachCallback)
Receive authentication response from the server.void
consumePackets(int numberOfResponses, WarningMessageCallback warningCallback)
Consumes packets notifying for warnings, but ignoring exceptions thrown from the packet.default void
enqueueDeferredAction(DeferredAction deferredAction)
Enqueue a deferred action.XdrStreamAccess
getXdrStreamAccess()
void
handleCryptKeyCallback(DbCryptCallback dbCryptCallback)
Handles the database encryption key callback.default void
processDeferredActions()
Processes any deferred actions.void
processResponse(Response response)
void
processResponseWarnings(Response response, WarningMessageCallback warningCallback)
Checks if the response included a warning and signals that warning to the WarningMessageCallback.GenericResponse
readGenericResponse(WarningMessageCallback callback)
Convenience method to read a Response to a GenericResponseResponse
readOperationResponse(int operationCode, WarningMessageCallback callback)
Reads the response from the server when the operation code has already been read.Response
readResponse(WarningMessageCallback callback)
Reads the response from the server.SqlResponse
readSqlResponse(WarningMessageCallback callback)
Convenience method to read a Response to a SqlResponsejava.sql.SQLException
readStatusVector()
Process the status vector and returns the associatedSQLException
instance.void
setNetworkTimeout(int milliseconds)
Sets the network timeout for this attachment.void
writeDirect(byte[] data)
Writes directly to theOutputStream
of the underlying connection.
-
-
-
Method Detail
-
getXdrStreamAccess
XdrStreamAccess getXdrStreamAccess()
- Returns:
- Instance of
XdrStreamAccess
for this service.
-
readStatusVector
java.sql.SQLException readStatusVector() throws java.sql.SQLException
Process the status vector and returns the associatedSQLException
instance.NOTE: This method returns the SQLException read from the status vector, and only throws SQLException when an error occurs processing the status vector.
- Returns:
- SQLException from the status vector
- Throws:
java.sql.SQLException
- for errors reading or processing the status vector
-
readResponse
Response readResponse(WarningMessageCallback callback) throws java.sql.SQLException, java.io.IOException
Reads the response from the server.- Parameters:
callback
- Callback object for warnings,null
for default callback- Returns:
Response
read.- Throws:
java.sql.SQLException
- For errors returned from the server, or when attempting to readjava.io.IOException
- For errors reading the response from the connection.
-
readOperationResponse
Response readOperationResponse(int operationCode, WarningMessageCallback callback) throws java.sql.SQLException, java.io.IOException
Reads the response from the server when the operation code has already been read.- Parameters:
operationCode
- The operation codecallback
- Callback object for warnings,null
for default callback- Returns:
Response
read.- Throws:
java.sql.SQLException
- For errors returned from the server, or when attempting to readjava.io.IOException
- For errors reading the response from the connection.- See Also:
readResponse(WarningMessageCallback)
-
readGenericResponse
GenericResponse readGenericResponse(WarningMessageCallback callback) throws java.sql.SQLException, java.io.IOException
Convenience method to read a Response to a GenericResponse- Parameters:
callback
- Callback object for warnings,null
for default callback- Returns:
- GenericResponse
- Throws:
java.sql.SQLException
- For errors returned from the server, or when attempting to read.java.io.IOException
- For errors reading the response from the connection.
-
readSqlResponse
SqlResponse readSqlResponse(WarningMessageCallback callback) throws java.sql.SQLException, java.io.IOException
Convenience method to read a Response to a SqlResponse- Parameters:
callback
- Callback object for warnings,null
for default callback- Returns:
- SqlResponse
- Throws:
java.sql.SQLException
- For errors returned from the server, or when attempting to read.java.io.IOException
- For errors reading the response from the connection.
-
handleCryptKeyCallback
void handleCryptKeyCallback(DbCryptCallback dbCryptCallback) throws java.io.IOException, java.sql.SQLException
Handles the database encryption key callback.- Parameters:
dbCryptCallback
- Database encryption callback plugin- Throws:
java.io.IOException
- For errors reading data from the socketjava.sql.SQLException
- For database errorsjava.sql.SQLFeatureNotSupportedException
- If this protocol version does not support crypt key callbacks- Since:
- 4.0
-
enqueueDeferredAction
default void enqueueDeferredAction(DeferredAction deferredAction)
Enqueue a deferred action.FbDatabase implementations that do not support deferred actions are allowed to throw an
UnsupportedOperationException
(which the default implementation does).- Parameters:
deferredAction
- Deferred action
-
consumePackets
void consumePackets(int numberOfResponses, WarningMessageCallback warningCallback)
Consumes packets notifying for warnings, but ignoring exceptions thrown from the packet.This method should only be used inside the implementation if either packets need to be ignored, or to ensure that there is no backlog of packets (eg when an exception occurs during processing of multiple package responses).
- Parameters:
numberOfResponses
- Number of responses to consume.warningCallback
- Callback for warnings
-
processDeferredActions
default void processDeferredActions()
Processes any deferred actions. Protocol versions that do not support deferred actions should simply do nothing.WARNING: If the server queues deferred responses, and expects an operation (e.g.
op_batch_sync
,op_batch_exec
orop_ping
) to actual send those responses, this method may block indefinitely.
-
processResponse
void processResponse(Response response) throws java.sql.SQLException
- Parameters:
response
- Response to process- Throws:
java.sql.SQLException
- For errors returned from the server.
-
processResponseWarnings
void processResponseWarnings(Response response, WarningMessageCallback warningCallback)
Checks if the response included a warning and signals that warning to the WarningMessageCallback.- Parameters:
response
- Response to process
-
writeDirect
void writeDirect(byte[] data) throws java.io.IOException
Writes directly to theOutputStream
of the underlying connection.Use of this method might lead to hard to find race conditions in the protocol. It is currently only used to allow
FbDatabase.cancelOperation(int)
to work.- Parameters:
data
- Data to write- Throws:
java.io.IOException
- If there is no socket, the socket is closed, or for errors writing to the socket.- See Also:
WireConnection.writeDirect(byte[])
-
authReceiveResponse
void authReceiveResponse(FbWireAttachment.AcceptPacket acceptPacket, DbCryptCallback dbCryptCallback, FbWireOperations.ProcessAttachCallback processAttachCallback) throws java.io.IOException, java.sql.SQLException
Receive authentication response from the server.This method is only relevant for protocol V13 or higher.
- Parameters:
acceptPacket
- Packet withop_cond_accept
data, ornull
when the data should be read from the connection.dbCryptCallback
- Database encryption callback (ignored by protocols v12 and lower)processAttachCallback
- Callback for processing the final attach response- Throws:
java.io.IOException
- For errors reading the response from the connection.java.sql.SQLException
- For errors returned from the server, or when attempting to read.
-
setNetworkTimeout
void setNetworkTimeout(int milliseconds) throws java.sql.SQLException
Sets the network timeout for this attachment.- Parameters:
milliseconds
- Timeout in milliseconds; 0 means no timeout. If the attachment doesn't support milliseconds, it should round up to the nearest second.- Throws:
java.sql.SQLException
- If this attachment is closed, the value ofmilliseconds
is smaller than 0, or if setting the timeout fails.java.sql.SQLFeatureNotSupportedException
- If this attachment doesn't support changing the network timeout.
-
-