View Javadoc

1   /*
2    * @(#) $Id: IoProtocolConnector.java 210062 2005-07-11 03:52:38Z trustin $
3    */
4   package org.apache.mina.protocol.io;
5   
6   import java.io.IOException;
7   import java.net.SocketAddress;
8   
9   import org.apache.mina.common.ExceptionMonitor;
10  import org.apache.mina.io.IoConnector;
11  import org.apache.mina.io.IoSession;
12  import org.apache.mina.protocol.ProtocolConnector;
13  import org.apache.mina.protocol.ProtocolFilterChain;
14  import org.apache.mina.protocol.ProtocolProvider;
15  import org.apache.mina.protocol.ProtocolSession;
16  
17  /***
18   * A {@link ProtocolConnector} which wraps {@link IoConnector} to provide
19   * low-level I/O.
20   * <p>
21   * Please note that the user-defined attributes of {@link ProtocolSession}
22   * and its wrapping {@link IoSession} are shared.
23   *
24   * @author Trustin Lee (trustin@apache.org)
25   * @version $Rev: 210062 $, $Date: 2005-07-11 12:52:38 +0900 $
26   */
27  public class IoProtocolConnector implements ProtocolConnector
28  {
29      private final IoConnector connector;
30  
31      private final IoAdapter adapter = new IoAdapter( new IoProtocolSessionManagerFilterChain( this ) );
32  
33      /***
34       * Creates a new instance with the specified {@link IoConnector}.
35       */
36      public IoProtocolConnector( IoConnector connector )
37      {
38          if( connector == null )
39              throw new NullPointerException( "connector" );
40          this.connector = connector;
41      }
42  
43      /***
44       * Returns the underlying {@link IoConnector} instance this acceptor is
45       * wrapping.
46       */
47      public IoConnector getIoConnector()
48      {
49          return connector;
50      }
51  
52      public ProtocolSession connect( SocketAddress address,
53                                      ProtocolProvider provider ) throws IOException
54      {
55          IoSession session = connector.connect(
56                  address, adapter.adapt( provider ) );
57          return adapter.toProtocolSession( session );
58      }
59  
60      public ProtocolSession connect( SocketAddress address, SocketAddress localAddress,
61                                      ProtocolProvider provider ) throws IOException
62      {
63          IoSession session = connector.connect(
64                  address, localAddress, adapter.adapt( provider ) );
65          return adapter.toProtocolSession( session );
66      }
67  
68      public ProtocolSession connect( SocketAddress address, int timeout,
69                                      ProtocolProvider provider ) throws IOException
70      {
71          IoSession session = connector.connect(
72                  address, timeout, adapter.adapt( provider ) );
73          return adapter.toProtocolSession( session );
74      }
75  
76      public ProtocolSession connect( SocketAddress address, SocketAddress localAddress,
77                                      int timeout, ProtocolProvider provider ) throws IOException
78      {
79          IoSession session = connector.connect(
80                  address, localAddress, timeout, adapter.adapt( provider ) );
81          return adapter.toProtocolSession( session );
82      }
83  
84      public ProtocolFilterChain getFilterChain()
85      {
86          return adapter.getFilterChain();
87      }
88  
89      public ExceptionMonitor getExceptionMonitor()
90      {
91          return connector.getExceptionMonitor();
92      }
93  
94      public void setExceptionMonitor( ExceptionMonitor monitor )
95      {
96          connector.setExceptionMonitor( monitor );
97      }
98  }