1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29 package uk.ac.rdg.resc.jstyx.interloper;
30
31 import java.net.InetSocketAddress;
32
33 import org.apache.mina.protocol.ProtocolCodecFactory;
34 import org.apache.mina.protocol.ProtocolHandler;
35 import org.apache.mina.protocol.ProtocolProvider;
36 import org.apache.mina.protocol.ProtocolSession;
37
38 import uk.ac.rdg.resc.jstyx.messages.StyxCodecFactory;
39
40 /***
41 * Protocol provider for Styx interloper; handles client and server part
42 *
43 * @author Jon Blower
44 * $Revision: 136 $
45 * $Date: 2005-03-11 14:02:17 +0000 (Fri, 11 Mar 2005) $
46 * $Log$
47 * Revision 1.2 2005/03/11 14:01:59 jonblower
48 * Merged MINA-Test_20059309 into main line of development
49 *
50 * Revision 1.1.2.2 2005/03/10 18:29:41 jonblower
51 * Changed to use StyxCodecFactory
52 *
53 * Revision 1.1.2.1 2005/03/10 14:30:03 jonblower
54 * Initial import
55 *
56 */
57 public class StyxInterloperProtocolProvider implements ProtocolProvider
58 {
59
60 public static final int CLIENT_MODE = 0;
61 private ProtocolSession serverSession;
62
63 public static final int SERVER_MODE = 1;
64 private InetSocketAddress destSockAddr;
65
66 private InterloperListener listener;
67
68 private int mode;
69
70 /***
71 * Constructor for client mode
72 */
73 public StyxInterloperProtocolProvider(ProtocolSession serverSession,
74 InterloperListener listener)
75 {
76 this.mode = CLIENT_MODE;
77 this.serverSession = serverSession;
78 this.listener = listener;
79 }
80
81 /***
82 * Constructor for server mode
83 */
84 public StyxInterloperProtocolProvider(InetSocketAddress destSockAddr,
85 InterloperListener listener)
86 {
87 this.mode = SERVER_MODE;
88 this.destSockAddr = destSockAddr;
89 this.listener = listener;
90 }
91
92 public ProtocolCodecFactory getCodecFactory()
93 {
94 return StyxCodecFactory.getInstance();
95 }
96
97 public ProtocolHandler getHandler()
98 {
99 if (this.mode == CLIENT_MODE)
100 {
101 return new StyxInterloperClientProtocolHandler(this.serverSession,
102 this.listener);
103 }
104 else
105 {
106 return new StyxInterloperServerProtocolHandler(this.destSockAddr,
107 this.listener);
108 }
109 }
110
111 }