Package org.firebirdsql.gds.ng.wire

## Interface FbWireAsynchronousChannel

- All Known Implementing Classes:
    `V10AsynchronousChannel`

      public interface FbWireAsynchronousChannel

  Interface for the asynchronous channel used for event notification.
  Since:
    3.0
  Author:
    Mark Rotteveel

- - ### Method Summary

    All Methods Instance Methods Abstract Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `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.
    `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

- - ### Method Detail

    - #### connect

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

      Connects the asynchronous channel to the specified port.
      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

          void close()
              throws java.sql.SQLException

      Disconnect the asynchronous channel.

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

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

      Throws:
        `java.sql.SQLException` - For errors closing the channel

    - #### isConnected

          boolean isConnected()

      Returns:
        `true` if connected, otherwise `false`

    - #### addChannelListener

          void addChannelListener​(AsynchronousChannelListener listener)

      Register a listener for this channel.
      Parameters:
        `listener` - Listener

    - #### removeChannelListener

          void removeChannelListener​(AsynchronousChannelListener listener)

      Remove a listener from this channel
      Parameters:
        `listener` - Listener

    - #### getSocketChannel

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

      Returns:
        The socket channel associated with this asynchronous channel
      Throws:
        `java.sql.SQLException` - If not currently connected

    - #### getEventBuffer

          java.nio.ByteBuffer getEventBuffer()

      Returns:
        The byte buffer for event data

    - #### processEventData

          void processEventData()

      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).

    - #### queueEvent

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

      Queues a wait for an event.
      Parameters:
        `eventHandle` - Event handle
      Throws:
        `java.sql.SQLException`

    - #### cancelEvent

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

      Cancels a registered event.
      Parameters:
        `eventHandle` - The event handle to cancel
      Throws:
        `java.sql.SQLException` - For errors cancelling the event