Module org.firebirdsql.jaybird
Package org.firebirdsql.gds.ng.wire

# Class AbstractFbWireService

java.lang.Object
org.firebirdsql.gds.ng.AbstractFbAttachment<T>
org.firebirdsql.gds.ng.AbstractFbService<WireServiceConnection>
org.firebirdsql.gds.ng.wire.AbstractFbWireService

All Implemented Interfaces:
  `AutoCloseable`, `FbAttachment`, `FbService`, `ExceptionListenable`, `FbWireAttachment`, `FbWireService`

Direct Known Subclasses:
  `V10Service`

public abstract class AbstractFbWireService extends AbstractFbService<WireServiceConnection> implements FbWireService
Abstract service implementation for the wire protocol.

Since:
  3.0
Author:
  Mark Rotteveel

## Nested Class Summary

## Nested classes/interfaces inherited from interface org.firebirdsql.gds.ng.wire.FbWireAttachment

`FbWireAttachment.AcceptPacket`

## Field Summary

Fields
Modifier and Type
Field
Description
`protected final ProtocolDescriptor`
`protocolDescriptor`
`protected final FbWireOperations`
`wireOperations`

### Fields inherited from class org.firebirdsql.gds.ng.AbstractFbService

`serviceListenerDispatcher`

### Fields inherited from class org.firebirdsql.gds.ng.AbstractFbAttachment

`connection, exceptionListenerDispatcher`

## Constructor Summary

Constructors
Modifier
Constructor
Description
`protected`
`AbstractFbWireService(WireServiceConnection connection, ProtocolDescriptor descriptor)`
Creates an AbstractFbWireDatabase instance.

## Method Summary

Modifier and Type
Method
Description
`protected final void`
`checkAttached()`
Checks if a physical connection to the server is established and if the connection is attached to a database.
`protected final void`
`checkConnected()`
Checks if a physical connection to the server is established.
`protected final void`
`closeConnection()`
Closes the WireConnection associated with this connection.
`final ServiceParameterBuffer`
`createServiceParameterBuffer()`
Creates an empty `ServiceParameterBuffer`.
`final ServiceRequestBuffer`
`createServiceRequestBuffer()`
`void`
`forceClose()`
Forces the connection to close without proper detach or cleanup.
`final int`
`getHandle()`
`final FbWireOperations`
`getWireOperations()`
`protected final XdrInputStream`
`getXdrIn()`
Gets the XdrInputStream.
`protected final XdrOutputStream`
`getXdrOut()`
Gets the XdrOutputStream.
`final XdrStreamAccess`
`getXdrStreamAccess()`
`final boolean`
`isAttached()`
Current attachment status.
`final GenericResponse`
`readGenericResponse(WarningMessageCallback warningCallback)`
Convenience method to read a Response to a GenericResponse
`void`
`setNetworkTimeout(int milliseconds)`
Sets the network timeout for this attachment.

### Methods inherited from class org.firebirdsql.gds.ng.AbstractFbService

`addServiceListener, close, getDescribeServiceRequestBuffer, getServiceInfo, getServiceInformationProcessor, getServiceWarningCallback, internalDetach, removeServiceListener`

### Methods inherited from class org.firebirdsql.gds.ng.AbstractFbAttachment

`addExceptionListener, getDatatypeCoder, getEncoding, getEncodingFactory, getNetworkTimeout, getServerVersion, isLockedByCurrentThread, removeExceptionListener, requireNotAttached, safelyDetach, setAttached, setDetached, setServerVersion, withLock`

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

### Methods inherited from interface org.firebirdsql.gds.ng.listeners.ExceptionListenable

`addExceptionListener, removeExceptionListener`

### Methods inherited from interface org.firebirdsql.gds.ng.FbAttachment

`attach, close, getDatatypeCoder, getEncoding, getEncodingFactory, getNetworkTimeout, getServerVersion, isLockedByCurrentThread, withLock`

### Methods inherited from interface org.firebirdsql.gds.ng.FbService

`addServiceListener, getServiceInfo, getServiceInfo, removeServiceListener, startServiceAction`

### Methods inherited from interface org.firebirdsql.gds.ng.wire.FbWireAttachment

`authReceiveResponse`

## Field Details

### protocolDescriptor

protected final ProtocolDescriptor protocolDescriptor

### wireOperations

protected final FbWireOperations wireOperations

## Constructor Details

### AbstractFbWireService

protected AbstractFbWireService(WireServiceConnection connection, ProtocolDescriptor descriptor)
Creates an AbstractFbWireDatabase instance.

Parameters:
  `connection` - A WireConnection with an established connection to the server.
  `descriptor` - The ProtocolDescriptor that created this connection (this is used for creating further dependent objects).

## Method Details

### getHandle

public final int getHandle()

Specified by:
  `getHandle` in interface `FbAttachment`
Specified by:
  `getHandle` in interface `FbService`
Returns:
  The service handle value

### forceClose

public void forceClose() throws SQLException
Description copied from class: `AbstractFbAttachment`
Forces the connection to close without proper detach or cleanup.

If a given implementation does not support this, then this method should call `FbAttachment.close()`.

Default implementation, calls `FbAttachment.close()`

Specified by:
  `forceClose` in interface `FbAttachment`
Overrides:
  `forceClose` in class `AbstractFbAttachment<WireServiceConnection>`
Throws:
  `SQLException` - For problems closing the connection.

### createServiceParameterBuffer

public final ServiceParameterBuffer createServiceParameterBuffer()
Description copied from interface: `FbService`
Creates an empty `ServiceParameterBuffer`.

Attach expects a service parameter buffer to have the version as the first item. This needs to be added explicitly.

Specified by:
  `createServiceParameterBuffer` in interface `FbService`
Returns:
  Service

### createServiceRequestBuffer

public final ServiceRequestBuffer createServiceRequestBuffer()

Specified by:
  `createServiceRequestBuffer` in interface `FbService`
Returns:
  An empty service request buffer

### isAttached

public final boolean isAttached()
Description copied from interface: `FbAttachment`
Current attachment status.

Specified by:
  `isAttached` in interface `FbAttachment`
Overrides:
  `isAttached` in class `AbstractFbAttachment<WireServiceConnection>`
Returns:
  `true` if connected to the server and attached to a database or service, `false` otherwise.

### checkConnected

protected final void checkConnected() throws SQLException
Checks if a physical connection to the server is established.

Specified by:
  `checkConnected` in class `AbstractFbAttachment<WireServiceConnection>`
Throws:
  `SQLException` - If not connected.

### checkAttached

protected final void checkAttached() throws SQLException
Checks if a physical connection to the server is established and if the connection is attached to a database.

This method calls `checkConnected()`, so it is not necessary to call both.

Throws:
  `SQLException` - If the database not connected or attached.

### setNetworkTimeout

public void setNetworkTimeout(int milliseconds) throws SQLException
Description copied from interface: `FbAttachment`
Sets the network timeout for this attachment.

Specified by:
  `setNetworkTimeout` in interface `FbAttachment`
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:
  `SQLException` - If this attachment is closed, the value of `milliseconds` is smaller than 0, or if setting the timeout fails.
  `SQLFeatureNotSupportedException` - If this attachment doesn't support (changing) the network timeout.

### getXdrIn

protected final XdrInputStream getXdrIn() throws SQLException
Gets the XdrInputStream.

Returns:
  Instance of XdrInputStream
Throws:
  `SQLException` - If no connection is opened or when exceptions occur retrieving the InputStream

### getXdrOut

protected final XdrOutputStream getXdrOut() throws SQLException
Gets the XdrOutputStream.

Returns:
  Instance of XdrOutputStream
Throws:
  `SQLException` - If no connection is opened or when exceptions occur retrieving the OutputStream

### readGenericResponse

public final GenericResponse readGenericResponse(WarningMessageCallback warningCallback) throws SQLException, IOException
Description copied from interface: `FbWireAttachment`
Convenience method to read a Response to a GenericResponse

Specified by:
  `readGenericResponse` in interface `FbWireAttachment`
Parameters:
  `warningCallback` - Callback object for warnings, `null` for default callback
Returns:
  GenericResponse
Throws:
  `SQLException` - For errors returned from the server, or when attempting to read.
  `IOException` - For errors reading the response from the connection.

### getXdrStreamAccess

public final XdrStreamAccess getXdrStreamAccess()

Specified by:
  `getXdrStreamAccess` in interface `FbWireAttachment`
Returns:
  Instance of `XdrStreamAccess` for this attachment.

### getWireOperations

public final FbWireOperations getWireOperations()

Specified by:
  `getWireOperations` in interface `FbWireAttachment`
Returns:
  Instance of `FbWireOperations` for this attachment.

### closeConnection

protected final void closeConnection() throws IOException
Closes the WireConnection associated with this connection.

Throws:
  `IOException` - For errors closing the connection.