annotate test/channeltest/testSeMa.java @ 171:690182302c05

*** empty log message ***
author kent
date Thu, 28 Aug 2008 18:56:59 +0900
parents be2c1a1e9b8d
children 72252e970a8b
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
154
fafbaaa0abd0 *** empty log message ***
kono
parents:
diff changeset
1 package test.channeltest;
fafbaaa0abd0 *** empty log message ***
kono
parents:
diff changeset
2
fafbaaa0abd0 *** empty log message ***
kono
parents:
diff changeset
3 import java.io.IOException;
157
f0d80a64aba0 *** empty log message ***
kono
parents: 154
diff changeset
4 import java.net.InetSocketAddress;
f0d80a64aba0 *** empty log message ***
kono
parents: 154
diff changeset
5 import java.net.SocketAddress;
f0d80a64aba0 *** empty log message ***
kono
parents: 154
diff changeset
6 import java.nio.channels.SelectionKey;
154
fafbaaa0abd0 *** empty log message ***
kono
parents:
diff changeset
7 import java.util.LinkedList;
fafbaaa0abd0 *** empty log message ***
kono
parents:
diff changeset
8
157
f0d80a64aba0 *** empty log message ***
kono
parents: 154
diff changeset
9 import rep.channel.REPLogger;
f0d80a64aba0 *** empty log message ***
kono
parents: 154
diff changeset
10 import rep.channel.REPSelector;
f0d80a64aba0 *** empty log message ***
kono
parents: 154
diff changeset
11 import rep.channel.REPServerSocketChannel;
f0d80a64aba0 *** empty log message ***
kono
parents: 154
diff changeset
12 import rep.channel.REPSocketChannel;
154
fafbaaa0abd0 *** empty log message ***
kono
parents:
diff changeset
13
fafbaaa0abd0 *** empty log message ***
kono
parents:
diff changeset
14 public class testSeMa extends Thread{
fafbaaa0abd0 *** empty log message ***
kono
parents:
diff changeset
15
157
f0d80a64aba0 *** empty log message ***
kono
parents: 154
diff changeset
16 SocketAddress IP;
154
fafbaaa0abd0 *** empty log message ***
kono
parents:
diff changeset
17 boolean running=true;
157
f0d80a64aba0 *** empty log message ***
kono
parents: 154
diff changeset
18 REPLogger ns;
f0d80a64aba0 *** empty log message ***
kono
parents: 154
diff changeset
19 LinkedList<REPSocketChannel<String>> channels;
166
be2c1a1e9b8d *** empty log message ***
kono
parents: 161
diff changeset
20
161
5b4be02e7243 *** empty log message ***
kono
parents: 157
diff changeset
21 public testSeMa(String name, String host, int port){
154
fafbaaa0abd0 *** empty log message ***
kono
parents:
diff changeset
22 super(name);
157
f0d80a64aba0 *** empty log message ***
kono
parents: 154
diff changeset
23 IP = new InetSocketAddress(host,port);
161
5b4be02e7243 *** empty log message ***
kono
parents: 157
diff changeset
24 ns = testNetworkSimulator.ns;
157
f0d80a64aba0 *** empty log message ***
kono
parents: 154
diff changeset
25 channels = new LinkedList<REPSocketChannel<String>>();
154
fafbaaa0abd0 *** empty log message ***
kono
parents:
diff changeset
26 }
fafbaaa0abd0 *** empty log message ***
kono
parents:
diff changeset
27 public void init(){
166
be2c1a1e9b8d *** empty log message ***
kono
parents: 161
diff changeset
28
154
fafbaaa0abd0 *** empty log message ***
kono
parents:
diff changeset
29 }
fafbaaa0abd0 *** empty log message ***
kono
parents:
diff changeset
30
157
f0d80a64aba0 *** empty log message ***
kono
parents: 154
diff changeset
31 @SuppressWarnings("unchecked")
154
fafbaaa0abd0 *** empty log message ***
kono
parents:
diff changeset
32 public void run() {
171
690182302c05 *** empty log message ***
kent
parents: 166
diff changeset
33 REPSelector selector=null;
690182302c05 *** empty log message ***
kent
parents: 166
diff changeset
34
157
f0d80a64aba0 *** empty log message ***
kono
parents: 154
diff changeset
35 REPServerSocketChannel<String> scs;
f0d80a64aba0 *** empty log message ***
kono
parents: 154
diff changeset
36 try {
166
be2c1a1e9b8d *** empty log message ***
kono
parents: 161
diff changeset
37 selector = REPSelector.create();
157
f0d80a64aba0 *** empty log message ***
kono
parents: 154
diff changeset
38 scs = REPServerSocketChannel.<String>open();
166
be2c1a1e9b8d *** empty log message ***
kono
parents: 161
diff changeset
39 scs.socket().setReuseAddress(true);
be2c1a1e9b8d *** empty log message ***
kono
parents: 161
diff changeset
40 scs.socket().bind(IP);
be2c1a1e9b8d *** empty log message ***
kono
parents: 161
diff changeset
41 scs.configureBlocking(false);
157
f0d80a64aba0 *** empty log message ***
kono
parents: 154
diff changeset
42 selector.register(scs, SelectionKey.OP_ACCEPT, null);
f0d80a64aba0 *** empty log message ***
kono
parents: 154
diff changeset
43 } catch (IOException e1) {
166
be2c1a1e9b8d *** empty log message ***
kono
parents: 161
diff changeset
44 return;
157
f0d80a64aba0 *** empty log message ***
kono
parents: 154
diff changeset
45 }
f0d80a64aba0 *** empty log message ***
kono
parents: 154
diff changeset
46
154
fafbaaa0abd0 *** empty log message ***
kono
parents:
diff changeset
47 ns.writeLog("SessionManager starts mainroutin.", 1);
fafbaaa0abd0 *** empty log message ***
kono
parents:
diff changeset
48
fafbaaa0abd0 *** empty log message ***
kono
parents:
diff changeset
49 /* Main Loop */
fafbaaa0abd0 *** empty log message ***
kono
parents:
diff changeset
50 while(running){
fafbaaa0abd0 *** empty log message ***
kono
parents:
diff changeset
51
166
be2c1a1e9b8d *** empty log message ***
kono
parents: 161
diff changeset
52 try {
be2c1a1e9b8d *** empty log message ***
kono
parents: 161
diff changeset
53 selector.select();
154
fafbaaa0abd0 *** empty log message ***
kono
parents:
diff changeset
54
166
be2c1a1e9b8d *** empty log message ***
kono
parents: 161
diff changeset
55 for(SelectionKey key : selector.selectedKeys()){
154
fafbaaa0abd0 *** empty log message ***
kono
parents:
diff changeset
56
166
be2c1a1e9b8d *** empty log message ***
kono
parents: 161
diff changeset
57 if(key.isAcceptable()){
be2c1a1e9b8d *** empty log message ***
kono
parents: 161
diff changeset
58 ns.writeLog(this, "gets acceptable channel", 1);
be2c1a1e9b8d *** empty log message ***
kono
parents: 161
diff changeset
59 REPServerSocketChannel<String> sc = (REPServerSocketChannel<String>) key.channel();
be2c1a1e9b8d *** empty log message ***
kono
parents: 161
diff changeset
60 REPSocketChannel<String> channel;
157
f0d80a64aba0 *** empty log message ***
kono
parents: 154
diff changeset
61 channel = sc.accept1();
f0d80a64aba0 *** empty log message ***
kono
parents: 154
diff changeset
62 selector.register(channel, SelectionKey.OP_READ, null);
166
be2c1a1e9b8d *** empty log message ***
kono
parents: 161
diff changeset
63 ns.writeLog(this, "accepts a client.", 1);
be2c1a1e9b8d *** empty log message ***
kono
parents: 161
diff changeset
64
be2c1a1e9b8d *** empty log message ***
kono
parents: 161
diff changeset
65 }else if(key.isReadable()){
be2c1a1e9b8d *** empty log message ***
kono
parents: 161
diff changeset
66 ns.writeLog(this, "gets readable channel", 1);
be2c1a1e9b8d *** empty log message ***
kono
parents: 161
diff changeset
67 //SelectableChannelSimulator<String> channel = key.channel();
be2c1a1e9b8d *** empty log message ***
kono
parents: 161
diff changeset
68 REPSocketChannel<String> channel = (REPSocketChannel<String>) key.channel();
157
f0d80a64aba0 *** empty log message ***
kono
parents: 154
diff changeset
69 String packet;
f0d80a64aba0 *** empty log message ***
kono
parents: 154
diff changeset
70 packet = channel.read();
f0d80a64aba0 *** empty log message ***
kono
parents: 154
diff changeset
71 ns.writeLog(this, "receives String==> `"+packet+"\'", 1);
166
be2c1a1e9b8d *** empty log message ***
kono
parents: 161
diff changeset
72 channel.write("from SeMa"+this.getName()+": world");
157
f0d80a64aba0 *** empty log message ***
kono
parents: 154
diff changeset
73 }
154
fafbaaa0abd0 *** empty log message ***
kono
parents:
diff changeset
74 }
fafbaaa0abd0 *** empty log message ***
kono
parents:
diff changeset
75 }
166
be2c1a1e9b8d *** empty log message ***
kono
parents: 161
diff changeset
76 catch (IOException e) { e.printStackTrace();}
154
fafbaaa0abd0 *** empty log message ***
kono
parents:
diff changeset
77 }
166
be2c1a1e9b8d *** empty log message ***
kono
parents: 161
diff changeset
78
154
fafbaaa0abd0 *** empty log message ***
kono
parents:
diff changeset
79 }
fafbaaa0abd0 *** empty log message ***
kono
parents:
diff changeset
80 }