Class WireConnection<T extends IAttachProperties<T>,C extends FbWireAttachment>

java.lang.Object
org.firebirdsql.gds.ng.AbstractConnection<T,C>
org.firebirdsql.gds.ng.wire.WireConnection<T,C>
Type Parameters:
T - Type of attach properties
C - Type of connection handle
All Implemented Interfaces:
Closeable, AutoCloseable
Direct Known Subclasses:
WireDatabaseConnection, WireServiceConnection

public abstract class WireConnection<T extends IAttachProperties<T>,C extends FbWireAttachment> extends AbstractConnection<T,C> implements Closeable
Class managing the TCP/IP connection and initial handshaking with the Firebird server.
Since:
3.0
Author:
Mark Rotteveel
  • Constructor Details

    • WireConnection

      protected WireConnection(T attachProperties) throws SQLException
      Creates a WireConnection (without establishing a connection to the server) with the default protocol collection.
      Parameters:
      attachProperties - Attach properties
      Throws:
      SQLException
    • WireConnection

      protected WireConnection(T attachProperties, IEncodingFactory encodingFactory, ProtocolCollection protocols) throws SQLException
      Creates a WireConnection (without establishing a connection to the server).
      Parameters:
      attachProperties - Attach properties
      encodingFactory - Factory for encoding definitions
      protocols - The collection of protocols to use for this connection.
      Throws:
      SQLException
  • Method Details

    • getServerName

      public final String getServerName()
    • getPortNumber

      public final int getPortNumber()
    • getCnctFile

      protected String getCnctFile()
      Returns:
      The file name to use in the p_cnct_file of the op_connect request
    • getAttachObjectName

      public final String getAttachObjectName()
    • toDbAttachInfo

      protected abstract DbAttachInfo toDbAttachInfo(T attachProperties) throws SQLException
      Throws:
      SQLException
    • isConnected

      public final boolean isConnected()
    • getProtocolVersion

      public final int getProtocolVersion()
    • getProtocolArchitecture

      public final int getProtocolArchitecture()
    • getProtocolMinimumType

      public final int getProtocolMinimumType()
    • getClientAuthBlock

      public final ClientAuthBlock getClientAuthBlock()
    • setSoTimeout

      public final void setSoTimeout(int socketTimeout) throws SQLException
      Sets the socket blocking timeout (SO_TIMEOUT) of the socket.

      This method can also be called if a connection is established

      Parameters:
      socketTimeout - Value of the socket timeout (in milliseconds)
      Throws:
      SQLException - If the timeout value cannot be changed
    • resetSocketTimeout

      public final void resetSocketTimeout() throws SQLException
      Resets the socket timeout to the configured socketTimeout. Does nothing if currently not connected.
      Throws:
      SQLException - If the timeout value cannot be changed
    • socketConnect

      public final void socketConnect() throws SQLException
      Establishes the TCP/IP connection to serverName and portNumber of this connection.
      Throws:
      SQLTimeoutException - if the connection cannot be established within the connect timeout (either explicitly set or implied by the OS timeout of the socket)
      SQLException - if the connection cannot be established.
    • getXdrStreamAccess

      public final XdrStreamAccess getXdrStreamAccess()
    • identify

      public final C identify() throws SQLException
      Performs the connection identification phase of the Wire protocol and returns the FbWireDatabase implementation for the agreed protocol.
      Specified by:
      identify in class AbstractConnection<T extends IAttachProperties<T>,C extends FbWireAttachment>
      Returns:
      FbWireDatabase
      Throws:
      SQLException - For exceptions connecting
    • clearAuthData

      public final void clearAuthData()
      Clear authentication data.
    • createConnectionHandle

      protected abstract C createConnectionHandle(ProtocolDescriptor protocolDescriptor)
      Creates the connection handle for this type of connection.
      Parameters:
      protocolDescriptor - The protocol descriptor selected by the identify phase
      Returns:
      Connection handle
    • readNextOperation

      public final int readNextOperation() throws IOException
      Reads the next operation code. Skips all WireProtocolConstants.op_dummy codes received.
      Returns:
      Operation code
      Throws:
      IOException - if an error occurs while reading from the underlying InputStream
    • close

      public final void close() throws IOException
      Closes the TCP/IP connection. This is not a normal detach operation.
      Specified by:
      close in interface AutoCloseable
      Specified by:
      close in interface Closeable
      Throws:
      IOException - if closing fails
    • writeDirect

      public final void writeDirect(byte[] data) throws IOException
      Writes directly to the OutputStream of the underlying socket.
      Parameters:
      data - Data to write
      Throws:
      IOException - If there is no socket, the socket is closed, or for errors writing to the socket.