annotate test/channeltest/testSeMa.java @ 154:fafbaaa0abd0

*** empty log message ***
author kono
date Thu, 28 Aug 2008 15:33:02 +0900
parents
children f0d80a64aba0
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;
fafbaaa0abd0 *** empty log message ***
kono
parents:
diff changeset
4 import java.util.LinkedList;
fafbaaa0abd0 *** empty log message ***
kono
parents:
diff changeset
5
fafbaaa0abd0 *** empty log message ***
kono
parents:
diff changeset
6 import pathfinder.mergetest.channels.*;
fafbaaa0abd0 *** empty log message ***
kono
parents:
diff changeset
7
fafbaaa0abd0 *** empty log message ***
kono
parents:
diff changeset
8
fafbaaa0abd0 *** empty log message ***
kono
parents:
diff changeset
9 public class testSeMa extends Thread{
fafbaaa0abd0 *** empty log message ***
kono
parents:
diff changeset
10
fafbaaa0abd0 *** empty log message ***
kono
parents:
diff changeset
11 int IP;
fafbaaa0abd0 *** empty log message ***
kono
parents:
diff changeset
12 boolean running=true;
fafbaaa0abd0 *** empty log message ***
kono
parents:
diff changeset
13 NetworkSimulator<String> ns;
fafbaaa0abd0 *** empty log message ***
kono
parents:
diff changeset
14 LinkedList<ChannelSimulator<String>> channels;
fafbaaa0abd0 *** empty log message ***
kono
parents:
diff changeset
15
fafbaaa0abd0 *** empty log message ***
kono
parents:
diff changeset
16 public testSeMa(NetworkSimulator<String> _ns, String name, int ip){
fafbaaa0abd0 *** empty log message ***
kono
parents:
diff changeset
17 super(name);
fafbaaa0abd0 *** empty log message ***
kono
parents:
diff changeset
18 IP = ip;
fafbaaa0abd0 *** empty log message ***
kono
parents:
diff changeset
19 ns = _ns;
fafbaaa0abd0 *** empty log message ***
kono
parents:
diff changeset
20 channels = new LinkedList<ChannelSimulator<String>>();
fafbaaa0abd0 *** empty log message ***
kono
parents:
diff changeset
21 }
fafbaaa0abd0 *** empty log message ***
kono
parents:
diff changeset
22 public void init(){
fafbaaa0abd0 *** empty log message ***
kono
parents:
diff changeset
23
fafbaaa0abd0 *** empty log message ***
kono
parents:
diff changeset
24 }
fafbaaa0abd0 *** empty log message ***
kono
parents:
diff changeset
25
fafbaaa0abd0 *** empty log message ***
kono
parents:
diff changeset
26 public void run() {
fafbaaa0abd0 *** empty log message ***
kono
parents:
diff changeset
27 SelectorSimulator<String> selector = new SelectorSimulator<String>();
fafbaaa0abd0 *** empty log message ***
kono
parents:
diff changeset
28 ServerChannelSimulator<String> scs = new ServerChannelSimulator<String>(ns, selector);
fafbaaa0abd0 *** empty log message ***
kono
parents:
diff changeset
29 scs.bind(IP);
fafbaaa0abd0 *** empty log message ***
kono
parents:
diff changeset
30 selector.register(scs, SelectionKeySimulator.OP_ACCEPT);
fafbaaa0abd0 *** empty log message ***
kono
parents:
diff changeset
31 ns.writeLog("SessionManager starts mainroutin.", 1);
fafbaaa0abd0 *** empty log message ***
kono
parents:
diff changeset
32
fafbaaa0abd0 *** empty log message ***
kono
parents:
diff changeset
33 /* Main Loop */
fafbaaa0abd0 *** empty log message ***
kono
parents:
diff changeset
34 while(running){
fafbaaa0abd0 *** empty log message ***
kono
parents:
diff changeset
35
fafbaaa0abd0 *** empty log message ***
kono
parents:
diff changeset
36 try { selector.select(); }
fafbaaa0abd0 *** empty log message ***
kono
parents:
diff changeset
37 catch (IOException e) { e.printStackTrace();}
fafbaaa0abd0 *** empty log message ***
kono
parents:
diff changeset
38
fafbaaa0abd0 *** empty log message ***
kono
parents:
diff changeset
39 for(SelectionKeySimulator<String> key : selector.selectedKeys()){
fafbaaa0abd0 *** empty log message ***
kono
parents:
diff changeset
40
fafbaaa0abd0 *** empty log message ***
kono
parents:
diff changeset
41 if(key.isAcceptable()){
fafbaaa0abd0 *** empty log message ***
kono
parents:
diff changeset
42 ns.writeLog(this, "gets acceptable channel", 1);
fafbaaa0abd0 *** empty log message ***
kono
parents:
diff changeset
43 ServerChannelSimulator<String> sc = (ServerChannelSimulator<String>) key.channel();
fafbaaa0abd0 *** empty log message ***
kono
parents:
diff changeset
44 ChannelSimulator<String> channel = sc.accept();
fafbaaa0abd0 *** empty log message ***
kono
parents:
diff changeset
45 selector.register(channel, SelectionKeySimulator.OP_READ);
fafbaaa0abd0 *** empty log message ***
kono
parents:
diff changeset
46 ns.writeLog(this, "accepts a client.", 1);
fafbaaa0abd0 *** empty log message ***
kono
parents:
diff changeset
47
fafbaaa0abd0 *** empty log message ***
kono
parents:
diff changeset
48 }else if(key.isReadable()){
fafbaaa0abd0 *** empty log message ***
kono
parents:
diff changeset
49 ns.writeLog(this, "gets readable channel", 1);
fafbaaa0abd0 *** empty log message ***
kono
parents:
diff changeset
50 //SelectableChannelSimulator<String> channel = key.channel();
fafbaaa0abd0 *** empty log message ***
kono
parents:
diff changeset
51 ChannelSimulator<String> channel = (ChannelSimulator<String>) key.channel();
fafbaaa0abd0 *** empty log message ***
kono
parents:
diff changeset
52 String packet = channel.read();
fafbaaa0abd0 *** empty log message ***
kono
parents:
diff changeset
53 ns.writeLog(this, "receives String==> `"+packet+"\'", 1);
fafbaaa0abd0 *** empty log message ***
kono
parents:
diff changeset
54 channel.write("from SeMa"+this.getName()+": world");
fafbaaa0abd0 *** empty log message ***
kono
parents:
diff changeset
55 }
fafbaaa0abd0 *** empty log message ***
kono
parents:
diff changeset
56 }
fafbaaa0abd0 *** empty log message ***
kono
parents:
diff changeset
57 }
fafbaaa0abd0 *** empty log message ***
kono
parents:
diff changeset
58
fafbaaa0abd0 *** empty log message ***
kono
parents:
diff changeset
59 }
fafbaaa0abd0 *** empty log message ***
kono
parents:
diff changeset
60 }