1
2
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 }