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