org.apache.mina.proxy

## Class ProxyConnector

- java.lang.Object
- - org.apache.mina.core.service.AbstractIoService
  - - org.apache.mina.core.service.AbstractIoConnector
    - - org.apache.mina.proxy.ProxyConnector

- All Implemented Interfaces:
    IoConnector, IoService

      public class ProxyConnector
      extends AbstractIoConnector

  ProxyConnector.java - Decorator for `SocketConnector` to provide proxy support, as suggested by MINA list discussions.

  Operates by intercepting connect requests and replacing the endpoint address with the proxy address, then adding a `ProxyFilter` as the first `IoFilter` which performs any necessary handshaking with the proxy before allowing data to flow normally. During the handshake, any outgoing write requests are buffered.

  Since:
    MINA 2.0.0-M3
  Author:
    Apache MINA Project
  See Also:
    `http://www.nabble.com/Meta-Transport%3A-an-idea-on-implementing-reconnection-and-proxy-td12969001.html`, `http://issues.apache.org/jira/browse/DIRMINA-415`

- - ### Nested Class Summary

    - ### Nested classes/interfaces inherited from class org.apache.mina.core.service.AbstractIoService

      `AbstractIoService.ServiceOperationFuture`

  - ### Field Summary

    - ### Fields inherited from class org.apache.mina.core.service.AbstractIoService

      `disposalLock`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `ProxyConnector()` Creates a new proxy connector.
    `ProxyConnector(SocketConnector connector)` Creates a new proxy connector.
    `ProxyConnector(SocketConnector connector, IoSessionConfig config, Executor executor)` Creates a new proxy connector.

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `void` | `cancelConnectFuture()` Cancels the real connection when reconnection is in use.
    `protected ConnectFuture` | `connect0(SocketAddress remoteAddress, SocketAddress localAddress, IoSessionInitializer<? extends ConnectFuture> sessionInitializer)` Connects to the specified `address`.
    `protected void` | `dispose0()` Implement this method to release any acquired resources.
    `protected ConnectFuture` | `fireConnected(IoSession session)` Fires the connection event on the real future to notify the client.
    `SocketConnector` | `getConnector()` Get the `SocketConnector` to be used for connections to the proxy server.
    `ProxyIoSession` | `getProxyIoSession()` Returns the `ProxyIoSession` linked with this connector.
    `IoSessionConfig` | `getSessionConfig()` Returns the default configuration of the new `IoSession`s created by this service.
    `TransportMetadata` | `getTransportMetadata()` Returns the `TransportMetadata` that this service runs on.
    `void` | `setProxyIoSession(ProxyIoSession proxyIoSession)` Sets the proxy session object of this connector.

    - ### Methods inherited from class org.apache.mina.core.service.AbstractIoConnector

      `connect, connect, connect, connect, connect, connect, finishSessionInitialization0, getConnectTimeout, getConnectTimeoutCheckInterval, getConnectTimeoutMillis, getDefaultRemoteAddress, setConnectTimeout, setConnectTimeoutCheckInterval, setConnectTimeoutMillis, setDefaultRemoteAddress, toString`

    - ### Methods inherited from class org.apache.mina.core.service.AbstractIoService

      `addListener, broadcast, dispose, dispose, executeWorker, executeWorker, getActivationTime, getFilterChain, getFilterChainBuilder, getHandler, getListeners, getManagedSessionCount, getManagedSessions, getScheduledWriteBytes, getScheduledWriteMessages, getSessionDataStructureFactory, getStatistics, initSession, isActive, isDisposed, isDisposing, removeListener, setFilterChainBuilder, setHandler, setSessionDataStructureFactory`

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

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

    - ### Methods inherited from interface org.apache.mina.core.service.IoService

      `addListener, broadcast, dispose, dispose, getActivationTime, getFilterChain, getFilterChainBuilder, getHandler, getManagedSessionCount, getManagedSessions, getScheduledWriteBytes, getScheduledWriteMessages, getSessionDataStructureFactory, getStatistics, isActive, isDisposed, isDisposing, removeListener, setFilterChainBuilder, setHandler, setSessionDataStructureFactory`

- - ### Constructor Detail

    - #### ProxyConnector

          public ProxyConnector()

      Creates a new proxy connector.

    - #### ProxyConnector

          public ProxyConnector(SocketConnector connector)

      Creates a new proxy connector.
      Parameters:
        `connector` - Connector used to establish proxy connections.

    - #### ProxyConnector

          public ProxyConnector(SocketConnector connector,
                        IoSessionConfig config,
                        Executor executor)

      Creates a new proxy connector.
      See Also:
        `AbstractIoConnector(IoSessionConfig, Executor).`

  - ### Method Detail

    - #### getSessionConfig

          public IoSessionConfig getSessionConfig()

      Returns the default configuration of the new `IoSession`s created by this service.
      Specified by:
        `getSessionConfig` in interface `IoService`
      Overrides:
        `getSessionConfig` in class `AbstractIoService`

    - #### getProxyIoSession

          public ProxyIoSession getProxyIoSession()

      Returns the `ProxyIoSession` linked with this connector.

    - #### setProxyIoSession

          public void setProxyIoSession(ProxyIoSession proxyIoSession)

      Sets the proxy session object of this connector.
      Parameters:
        `proxyIoSession` - the configuration of this connector.

    - #### connect0

          protected ConnectFuture connect0(SocketAddress remoteAddress,
                               SocketAddress localAddress,
                               IoSessionInitializer<? extends ConnectFuture> sessionInitializer)

      Connects to the specified `address`. If communication starts successfully, events are fired to the connector's `handler`.
      Specified by:
        `connect0` in class `AbstractIoConnector`
      Parameters:
        `remoteAddress` - the remote address to connect to
        `localAddress` - the local address
        `sessionInitializer` - the session initializer
      Returns:
        `ConnectFuture` that will tell the result of the connection attempt

    - #### cancelConnectFuture

          public void cancelConnectFuture()

      Cancels the real connection when reconnection is in use.

    - #### fireConnected

          protected ConnectFuture fireConnected(IoSession session)

      Fires the connection event on the real future to notify the client.
      Parameters:
        `session` - the current session
      Returns:
        the future holding the connected session

    - #### getConnector

          public final SocketConnector getConnector()

      Get the `SocketConnector` to be used for connections to the proxy server.

    - #### dispose0

          protected void dispose0()
                           throws Exception

      Implement this method to release any acquired resources. This method is invoked only once by `AbstractIoService.dispose()`.
      Specified by:
        `dispose0` in class `AbstractIoService`
      Throws:
        `Exception`

    - #### getTransportMetadata

          public TransportMetadata getTransportMetadata()

      Returns the `TransportMetadata` that this service runs on.

Copyright © 2004-2012 Apache MINA Project. All Rights Reserved.