Package org.eclipse.net4j.connector

## Interface IConnector

- All Superinterfaces:
    `org.eclipse.net4j.util.collection.Closeable`, `IChannelMultiplexer`, `org.eclipse.net4j.util.container.IContainer<IChannel>`, `ILocationAware`, `org.eclipse.net4j.util.event.INotifier`, `org.eclipse.net4j.util.properties.IPropertiesContainer`, `org.eclipse.net4j.util.security.IUserAware`
  All Known Subinterfaces:
    `IJVMConnector`, `InternalConnector`, `IServerConnector`, `ITCPConnector`, `IWSConnector`
  All Known Implementing Classes:
    `Connector`

      public interface IConnector
      extends IChannelMultiplexer, org.eclipse.net4j.util.security.IUserAware, org.eclipse.net4j.util.collection.Closeable

  One endpoint of a physical connection of arbitrary nature between two communicating parties. A `IConnector` encapsulates the process of establishing and closing such connections and has a `location` of `CLIENT` or `SERVER` with respect to this process. Once a connection is established either party can use its connector to open multiple `IChannel`s to asynchronously exchange `IBuffer`s.

  This interface is not intended to be implemented by clients. Providers of connectors for new physical connection types have to implement org.eclipse.internal.net4j.connector.InternalConnector.

  Author:
    Eike Stepper
  No Implement
    This interface is not intended to be implemented by clients.
  No Extend
    This interface is not intended to be extended by clients.

- - ### Nested Class Summary

    - ### Nested classes/interfaces inherited from interface org.eclipse.net4j.util.container.IContainer

      `org.eclipse.net4j.util.container.IContainer.Modifiable<E extends java.lang.Object>, org.eclipse.net4j.util.container.IContainer.Persistable<E extends java.lang.Object>, org.eclipse.net4j.util.container.IContainer.Persistence<E extends java.lang.Object>`

    - ### Nested classes/interfaces inherited from interface org.eclipse.net4j.ILocationAware

      `ILocationAware.Location`

    - ### Nested classes/interfaces inherited from interface org.eclipse.net4j.util.event.INotifier

      `org.eclipse.net4j.util.event.INotifier.INotifier2`

  - ### Field Summary

    Fields
    Modifier and Type | Field | Description
    --- | --- | ---
    `static long` | `NO_TIMEOUT` |

    - ### Fields inherited from interface org.eclipse.net4j.channel.IChannelMultiplexer

      `DEFAULT_OPEN_CHANNEL_TIMEOUT, NO_CHANNEL_TIMEOUT`

  - ### Method Summary

    All Methods Instance Methods Abstract Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `void` | `connect()` | Synchronous connect with infinite timeout value.
    `void` | `connect​(long timeout)` | Synchronous connect.
    `void` | `connectAsync()` | Asynchronous connect.
    `ConnectorState` | `getState()` | Returns the current state of this connector.
    `java.lang.String` | `getURL()` |
    `boolean` | `isConnected()` | Same as ``getState()` == `ConnectorState.CONNECTED``.
    `void` | `waitForConnection​(long timeout)` | Blocks until ``isConnected()` == true` or the given timeout expired.

    - ### Methods inherited from interface org.eclipse.net4j.util.collection.Closeable

      `close, isClosed`

    - ### Methods inherited from interface org.eclipse.net4j.channel.IChannelMultiplexer

      `getChannels, getOpenChannelTimeout, openChannel, openChannel, openChannel, setOpenChannelTimeout`

    - ### Methods inherited from interface org.eclipse.net4j.util.container.IContainer

      `getElements, isEmpty`

    - ### Methods inherited from interface org.eclipse.net4j.ILocationAware

      `getLocation, isClient, isServer`

    - ### Methods inherited from interface org.eclipse.net4j.util.event.INotifier

      `addListener, getListeners, hasListeners, removeListener`

    - ### Methods inherited from interface org.eclipse.net4j.util.properties.IPropertiesContainer

      `properties`

    - ### Methods inherited from interface org.eclipse.net4j.util.security.IUserAware

      `getUserID`

- - ### Field Detail

    - #### NO_TIMEOUT

          static final long NO_TIMEOUT

      Since:
        2.0
      See Also:
        Constant Field Values

  - ### Method Detail

    - #### getURL

          java.lang.String getURL()

    - #### getState

          ConnectorState getState()

      Returns the current state of this connector.

    - #### isConnected

          boolean isConnected()

      Same as ``getState()` == `ConnectorState.CONNECTED``.

    - #### connect

          void connect()
                throws ConnectorException

      Synchronous connect with infinite timeout value. Same as `connect(NO_TIMEOUT)`.
      Throws:
        `ConnectorException`
      Since:
        4.0

    - #### connect

          void connect​(long timeout)
                throws ConnectorException

      Synchronous connect. Blocks until ``isConnected()` == true` or the given timeout expired.
      Parameters:
        `timeout` - The maximum number of milli seconds to block or `NO_TIMEOUT` to block indefinetely in case no connection occurs.
      Throws:
        `ConnectorException`
      Since:
        4.0

    - #### connectAsync

          void connectAsync()
                     throws ConnectorException

      Asynchronous connect. May leave this `IConnector` in a state where ``isConnected()` == false` .
      Throws:
        `ConnectorException`
      See Also:
        `waitForConnection(long)`, `connect(long)`

    - #### waitForConnection

          void waitForConnection​(long timeout)
                          throws ConnectorException

      Blocks until ``isConnected()` == true` or the given timeout expired.
      Parameters:
        `timeout` - The maximum number of milli seconds to block or `NO_TIMEOUT` to block indefinetely in case no connection occurs.
      Throws:
        `ConnectorException`
      Since:
        4.0