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.