org.firebirdsql.gds.ng.wire.version10

## Class V10AsynchronousChannel

- java.lang.Object
- - org.firebirdsql.gds.ng.wire.version10.V10AsynchronousChannel

All Implemented Interfaces:
  FbWireAsynchronousChannel

    public class V10AsynchronousChannel
    extends java.lang.Object
    implements FbWireAsynchronousChannel

Asynchronous channel implementation for the V10 wire protocol.

Since:
  3.0
Author:
  Mark Rotteveel

### Constructor Summary

Constructors
Constructor and Description
`V10AsynchronousChannel(FbWireDatabase database)`

### Method Summary

All Methods Instance Methods Concrete Methods
`void` `addChannelListener(AsynchronousChannelListener listener)` Register a listener for this channel.
`void` `cancelEvent(EventHandle eventHandle)` Cancels a registered event.
`void` `close()` Disconnect the asynchronous channel.
`void` `connect(java.lang.String hostName, int portNumber, int auxHandle)` Connects the asynchronous channel to the specified port.
`protected void` `finalize()`
`java.nio.ByteBuffer` `getEventBuffer()`
`java.nio.channels.SocketChannel` `getSocketChannel()`
`boolean` `isConnected()`
`void` `processEventData()` Process the current event data in the buffer.
`void` `queueEvent(EventHandle eventHandle)` Queues a wait for an event.
`void` `removeChannelListener(AsynchronousChannelListener listener)` Remove a listener from this channel
`protected LockCloseable` `withLock()`

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

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

### Constructor Detail

#### V10AsynchronousChannel

    public V10AsynchronousChannel(FbWireDatabase database)

### Method Detail

#### withLock

    protected final LockCloseable withLock()

See Also:
  `FbAttachment.withLock()`

#### connect

    public void connect(java.lang.String hostName,
                        int portNumber,
                        int auxHandle)
                 throws java.sql.SQLException

Description copied from interface: `FbWireAsynchronousChannel`
Connects the asynchronous channel to the specified port.

Specified by:
  `connect` in interface `FbWireAsynchronousChannel`
Parameters:
  `hostName` - Hostname
  `portNumber` - The port number
  `auxHandle` - Handle identifier for this asynchronous channel
Throws:
  `java.sql.SQLException` - For errors connecting, or if the connection is already established

#### close

    public void close()
               throws java.sql.SQLException

Description copied from interface: `FbWireAsynchronousChannel`
Disconnect the asynchronous channel.

Once closed, the connection can be reestablished using `FbWireAsynchronousChannel.connect(String, int, int)`.

Calling `close` on a closed channel is a no-op; no exception should be thrown.

Specified by:
  `close` in interface `FbWireAsynchronousChannel`
Throws:
  `java.sql.SQLException` - For errors closing the channel

#### isConnected

    public boolean isConnected()

Specified by:
  `isConnected` in interface `FbWireAsynchronousChannel`
Returns:
  `true` if connected, otherwise `false`

#### addChannelListener

    public void addChannelListener(AsynchronousChannelListener listener)

Description copied from interface: `FbWireAsynchronousChannel`
Register a listener for this channel.

Specified by:
  `addChannelListener` in interface `FbWireAsynchronousChannel`
Parameters:
  `listener` - Listener

#### removeChannelListener

    public void removeChannelListener(AsynchronousChannelListener listener)

Description copied from interface: `FbWireAsynchronousChannel`
Remove a listener from this channel

Specified by:
  `removeChannelListener` in interface `FbWireAsynchronousChannel`
Parameters:
  `listener` - Listener

#### getSocketChannel

    public java.nio.channels.SocketChannel getSocketChannel()
                                                     throws java.sql.SQLException

Specified by:
  `getSocketChannel` in interface `FbWireAsynchronousChannel`
Returns:
  The socket channel associated with this asynchronous channel
Throws:
  `java.sql.SQLException` - If not currently connected

#### getEventBuffer

    public java.nio.ByteBuffer getEventBuffer()

Specified by:
  `getEventBuffer` in interface `FbWireAsynchronousChannel`
Returns:
  The byte buffer for event data

#### processEventData

    public void processEventData()

Description copied from interface: `FbWireAsynchronousChannel`
Process the current event data in the buffer.

This is only to be called by the `AsynchronousProcessor`. Implementations should be ready to deal with incomplete data in the event buffer (eg by not processing).

Specified by:
  `processEventData` in interface `FbWireAsynchronousChannel`

#### queueEvent

    public void queueEvent(EventHandle eventHandle)
                    throws java.sql.SQLException

Description copied from interface: `FbWireAsynchronousChannel`
Queues a wait for an event.

Specified by:
  `queueEvent` in interface `FbWireAsynchronousChannel`
Parameters:
  `eventHandle` - Event handle
Throws:
  `java.sql.SQLException`

#### cancelEvent

    public void cancelEvent(EventHandle eventHandle)
                     throws java.sql.SQLException

Description copied from interface: `FbWireAsynchronousChannel`
Cancels a registered event.

Specified by:
  `cancelEvent` in interface `FbWireAsynchronousChannel`
Parameters:
  `eventHandle` - The event handle to cancel
Throws:
  `java.sql.SQLException` - For errors cancelling the event

#### finalize

    protected void finalize()
                     throws java.lang.Throwable

Overrides:
  `finalize` in class `java.lang.Object`
Throws:
  `java.lang.Throwable`