Package org.firebirdsql.gds.ng.wire
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 propertiesC
- Type of connection handle
- All Implemented Interfaces:
java.io.Closeable
,java.lang.AutoCloseable
- Direct Known Subclasses:
WireDatabaseConnection
,WireServiceConnection
public abstract class WireConnection<T extends IAttachProperties<T>,C extends FbWireAttachment> extends AbstractConnection<T,C> implements java.io.Closeable
Class managing the TCP/IP connection and initial handshaking with the Firebird server.- Since:
- 3.0
- Author:
- Mark Rotteveel
-
-
Field Summary
-
Fields inherited from class org.firebirdsql.gds.ng.AbstractConnection
attachProperties
-
-
Constructor Summary
Constructors Modifier Constructor Description protected
WireConnection(T attachProperties)
Creates a WireConnection (without establishing a connection to the server) with the default protocol collection.protected
WireConnection(T attachProperties, IEncodingFactory encodingFactory, ProtocolCollection protocols)
Creates a WireConnection (without establishing a connection to the server).
-
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description void
clearAuthData()
Clear authentication data.void
close()
Closes the TCP/IP connection.protected abstract C
createConnectionHandle(ProtocolDescriptor protocolDescriptor)
Creates the connection handle for this type of connection.protected void
finalize()
ClientAuthBlock
getClientAuthBlock()
int
getProtocolArchitecture()
int
getProtocolMinimumType()
int
getProtocolVersion()
XdrStreamAccess
getXdrStreamAccess()
C
identify()
Performs the connection identification phase of the Wire protocol and returns the FbWireDatabase implementation for the agreed protocol.boolean
isConnected()
int
readNextOperation()
Reads the next operation code.void
resetSocketTimeout()
Resets the socket timeout to the configured socketTimeout.void
setSoTimeout(int socketTimeout)
Sets the socket blocking timeout (SO_TIMEOUT) of the socket.void
socketConnect()
Establishes the TCP/IP connection to serverName and portNumber of this Connectionvoid
writeDirect(byte[] data)
Writes directly to theOutputStream
of the underlying socket.-
Methods inherited from class org.firebirdsql.gds.ng.AbstractConnection
createDbCryptCallback, getAttachObjectName, getAttachProperties, getEncoding, getEncodingDefinition, getEncodingFactory, getPortNumber, getServerName
-
-
-
-
Constructor Detail
-
WireConnection
protected WireConnection(T attachProperties) throws java.sql.SQLException
Creates a WireConnection (without establishing a connection to the server) with the default protocol collection.- Parameters:
attachProperties
- Attach properties- Throws:
java.sql.SQLException
-
WireConnection
protected WireConnection(T attachProperties, IEncodingFactory encodingFactory, ProtocolCollection protocols) throws java.sql.SQLException
Creates a WireConnection (without establishing a connection to the server).- Parameters:
attachProperties
- Attach propertiesencodingFactory
- Factory for encoding definitionsprotocols
- The collection of protocols to use for this connection.- Throws:
java.sql.SQLException
-
-
Method Detail
-
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 java.sql.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:
java.sql.SQLException
- If the timeout value cannot be changed
-
resetSocketTimeout
public final void resetSocketTimeout() throws java.sql.SQLException
Resets the socket timeout to the configured socketTimeout. Does nothing if currently not connected.- Throws:
java.sql.SQLException
- If the timeout value cannot be changed
-
socketConnect
public final void socketConnect() throws java.sql.SQLException
Establishes the TCP/IP connection to serverName and portNumber of this Connection- Throws:
java.sql.SQLTimeoutException
- If the connection cannot be established within the connect timeout (either explicitly set or implied by the OS timeout of the socket)java.sql.SQLException
- If the connection cannot be established.
-
getXdrStreamAccess
public final XdrStreamAccess getXdrStreamAccess()
-
identify
public final C identify() throws java.sql.SQLException
Performs the connection identification phase of the Wire protocol and returns the FbWireDatabase implementation for the agreed protocol.- Specified by:
identify
in classAbstractConnection<T extends IAttachProperties<T>,C extends FbWireAttachment>
- Returns:
- FbWireDatabase
- Throws:
java.sql.SQLTimeoutException
java.sql.SQLException
-
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 java.io.IOException
Reads the next operation code. Skips allWireProtocolConstants.op_dummy
codes received.- Returns:
- Operation code
- Throws:
java.io.IOException
- if an error occurs while reading from the underlying InputStream
-
close
public final void close() throws java.io.IOException
Closes the TCP/IP connection. This is not a normal detach operation.- Specified by:
close
in interfacejava.lang.AutoCloseable
- Specified by:
close
in interfacejava.io.Closeable
- Throws:
java.io.IOException
- if closing fails
-
finalize
protected final void finalize() throws java.lang.Throwable
- Overrides:
finalize
in classjava.lang.Object
- Throws:
java.lang.Throwable
-
writeDirect
public final void writeDirect(byte[] data) throws java.io.IOException
Writes directly to theOutputStream
of the underlying socket.- 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.
-
-