annotate rep/channel/ServerChannelSimulator.java @ 123:5b1a0574b406 add-simulator

*** empty log message ***
author pin
date Wed, 27 Aug 2008 17:21:25 +0900
parents
children 785a3e8ea858
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
123
5b1a0574b406 *** empty log message ***
pin
parents:
diff changeset
1 package rep.channel;
5b1a0574b406 *** empty log message ***
pin
parents:
diff changeset
2
5b1a0574b406 *** empty log message ***
pin
parents:
diff changeset
3 import java.io.IOException;
5b1a0574b406 *** empty log message ***
pin
parents:
diff changeset
4 import java.nio.channels.ClosedChannelException;
5b1a0574b406 *** empty log message ***
pin
parents:
diff changeset
5 import java.nio.channels.SelectableChannel;
5b1a0574b406 *** empty log message ***
pin
parents:
diff changeset
6 import java.nio.channels.SelectionKey;
5b1a0574b406 *** empty log message ***
pin
parents:
diff changeset
7 import java.nio.channels.Selector;
5b1a0574b406 *** empty log message ***
pin
parents:
diff changeset
8 import java.nio.channels.ServerSocketChannel;
5b1a0574b406 *** empty log message ***
pin
parents:
diff changeset
9 import java.nio.channels.spi.SelectorProvider;
5b1a0574b406 *** empty log message ***
pin
parents:
diff changeset
10
5b1a0574b406 *** empty log message ***
pin
parents:
diff changeset
11
5b1a0574b406 *** empty log message ***
pin
parents:
diff changeset
12
5b1a0574b406 *** empty log message ***
pin
parents:
diff changeset
13 public class ServerChannelSimulator<P>extends SelectableChannelSimulator<P>{
5b1a0574b406 *** empty log message ***
pin
parents:
diff changeset
14 protected NetworkSimulator<P> ns;
5b1a0574b406 *** empty log message ***
pin
parents:
diff changeset
15 private int virtualIP;
5b1a0574b406 *** empty log message ***
pin
parents:
diff changeset
16
5b1a0574b406 *** empty log message ***
pin
parents:
diff changeset
17 /** Constructors. */
5b1a0574b406 *** empty log message ***
pin
parents:
diff changeset
18 public ServerChannelSimulator(NetworkSimulator<P> _ns, SelectorSimulator<P> rselector){
5b1a0574b406 *** empty log message ***
pin
parents:
diff changeset
19 super(null);
5b1a0574b406 *** empty log message ***
pin
parents:
diff changeset
20 ns = _ns;
5b1a0574b406 *** empty log message ***
pin
parents:
diff changeset
21 readSelector = rselector;
5b1a0574b406 *** empty log message ***
pin
parents:
diff changeset
22 writeSelector = null;
5b1a0574b406 *** empty log message ***
pin
parents:
diff changeset
23 qread = null;
5b1a0574b406 *** empty log message ***
pin
parents:
diff changeset
24 qwrite = null;
5b1a0574b406 *** empty log message ***
pin
parents:
diff changeset
25 }
5b1a0574b406 *** empty log message ***
pin
parents:
diff changeset
26
5b1a0574b406 *** empty log message ***
pin
parents:
diff changeset
27 /** Connecting methods */
5b1a0574b406 *** empty log message ***
pin
parents:
diff changeset
28 // for servers.
5b1a0574b406 *** empty log message ***
pin
parents:
diff changeset
29 public void bind(int ip){
5b1a0574b406 *** empty log message ***
pin
parents:
diff changeset
30 virtualIP = ip;
5b1a0574b406 *** empty log message ***
pin
parents:
diff changeset
31 ns.listen(ip, readSelector);
5b1a0574b406 *** empty log message ***
pin
parents:
diff changeset
32 }
5b1a0574b406 *** empty log message ***
pin
parents:
diff changeset
33
5b1a0574b406 *** empty log message ***
pin
parents:
diff changeset
34 public ChannelSimulator<P> accept(){
5b1a0574b406 *** empty log message ***
pin
parents:
diff changeset
35 ChannelSimulator<P> channel = ns.accept(virtualIP);
5b1a0574b406 *** empty log message ***
pin
parents:
diff changeset
36 return channel;
5b1a0574b406 *** empty log message ***
pin
parents:
diff changeset
37 }
5b1a0574b406 *** empty log message ***
pin
parents:
diff changeset
38
5b1a0574b406 *** empty log message ***
pin
parents:
diff changeset
39
5b1a0574b406 *** empty log message ***
pin
parents:
diff changeset
40 /* state check methods for SelectionKeySimulator. */
5b1a0574b406 *** empty log message ***
pin
parents:
diff changeset
41 public boolean isReadable() {
5b1a0574b406 *** empty log message ***
pin
parents:
diff changeset
42 return false;
5b1a0574b406 *** empty log message ***
pin
parents:
diff changeset
43 }
5b1a0574b406 *** empty log message ***
pin
parents:
diff changeset
44 public boolean isWritable() {
5b1a0574b406 *** empty log message ***
pin
parents:
diff changeset
45 return false;
5b1a0574b406 *** empty log message ***
pin
parents:
diff changeset
46 }
5b1a0574b406 *** empty log message ***
pin
parents:
diff changeset
47 public boolean isAcceptable() {
5b1a0574b406 *** empty log message ***
pin
parents:
diff changeset
48 return ns.canAccept(virtualIP);
5b1a0574b406 *** empty log message ***
pin
parents:
diff changeset
49 }
5b1a0574b406 *** empty log message ***
pin
parents:
diff changeset
50
5b1a0574b406 *** empty log message ***
pin
parents:
diff changeset
51 @Override
5b1a0574b406 *** empty log message ***
pin
parents:
diff changeset
52 public Object blockingLock() {
5b1a0574b406 *** empty log message ***
pin
parents:
diff changeset
53 // TODO Auto-generated method stub
5b1a0574b406 *** empty log message ***
pin
parents:
diff changeset
54 return null;
5b1a0574b406 *** empty log message ***
pin
parents:
diff changeset
55 }
5b1a0574b406 *** empty log message ***
pin
parents:
diff changeset
56
5b1a0574b406 *** empty log message ***
pin
parents:
diff changeset
57 @Override
5b1a0574b406 *** empty log message ***
pin
parents:
diff changeset
58 public SelectableChannel configureBlocking(boolean block) throws IOException {
5b1a0574b406 *** empty log message ***
pin
parents:
diff changeset
59 // TODO Auto-generated method stub
5b1a0574b406 *** empty log message ***
pin
parents:
diff changeset
60 return null;
5b1a0574b406 *** empty log message ***
pin
parents:
diff changeset
61 }
5b1a0574b406 *** empty log message ***
pin
parents:
diff changeset
62
5b1a0574b406 *** empty log message ***
pin
parents:
diff changeset
63 @Override
5b1a0574b406 *** empty log message ***
pin
parents:
diff changeset
64 public boolean isBlocking() {
5b1a0574b406 *** empty log message ***
pin
parents:
diff changeset
65 // TODO Auto-generated method stub
5b1a0574b406 *** empty log message ***
pin
parents:
diff changeset
66 return false;
5b1a0574b406 *** empty log message ***
pin
parents:
diff changeset
67 }
5b1a0574b406 *** empty log message ***
pin
parents:
diff changeset
68
5b1a0574b406 *** empty log message ***
pin
parents:
diff changeset
69 @Override
5b1a0574b406 *** empty log message ***
pin
parents:
diff changeset
70 public boolean isRegistered() {
5b1a0574b406 *** empty log message ***
pin
parents:
diff changeset
71 // TODO Auto-generated method stub
5b1a0574b406 *** empty log message ***
pin
parents:
diff changeset
72 return false;
5b1a0574b406 *** empty log message ***
pin
parents:
diff changeset
73 }
5b1a0574b406 *** empty log message ***
pin
parents:
diff changeset
74
5b1a0574b406 *** empty log message ***
pin
parents:
diff changeset
75 @Override
5b1a0574b406 *** empty log message ***
pin
parents:
diff changeset
76 public SelectionKey keyFor(Selector sel) {
5b1a0574b406 *** empty log message ***
pin
parents:
diff changeset
77 // TODO Auto-generated method stub
5b1a0574b406 *** empty log message ***
pin
parents:
diff changeset
78 return null;
5b1a0574b406 *** empty log message ***
pin
parents:
diff changeset
79 }
5b1a0574b406 *** empty log message ***
pin
parents:
diff changeset
80
5b1a0574b406 *** empty log message ***
pin
parents:
diff changeset
81 @Override
5b1a0574b406 *** empty log message ***
pin
parents:
diff changeset
82 public SelectorProvider provider() {
5b1a0574b406 *** empty log message ***
pin
parents:
diff changeset
83 // TODO Auto-generated method stub
5b1a0574b406 *** empty log message ***
pin
parents:
diff changeset
84 return null;
5b1a0574b406 *** empty log message ***
pin
parents:
diff changeset
85 }
5b1a0574b406 *** empty log message ***
pin
parents:
diff changeset
86
5b1a0574b406 *** empty log message ***
pin
parents:
diff changeset
87 @Override
5b1a0574b406 *** empty log message ***
pin
parents:
diff changeset
88 public SelectionKey register(Selector sel, int ops, Object att) throws ClosedChannelException {
5b1a0574b406 *** empty log message ***
pin
parents:
diff changeset
89 // TODO Auto-generated method stub
5b1a0574b406 *** empty log message ***
pin
parents:
diff changeset
90 return null;
5b1a0574b406 *** empty log message ***
pin
parents:
diff changeset
91 }
5b1a0574b406 *** empty log message ***
pin
parents:
diff changeset
92
5b1a0574b406 *** empty log message ***
pin
parents:
diff changeset
93 @Override
5b1a0574b406 *** empty log message ***
pin
parents:
diff changeset
94 public int validOps() {
5b1a0574b406 *** empty log message ***
pin
parents:
diff changeset
95 // TODO Auto-generated method stub
5b1a0574b406 *** empty log message ***
pin
parents:
diff changeset
96 return 0;
5b1a0574b406 *** empty log message ***
pin
parents:
diff changeset
97 }
5b1a0574b406 *** empty log message ***
pin
parents:
diff changeset
98
5b1a0574b406 *** empty log message ***
pin
parents:
diff changeset
99 @Override
5b1a0574b406 *** empty log message ***
pin
parents:
diff changeset
100 protected void implCloseChannel() throws IOException {
5b1a0574b406 *** empty log message ***
pin
parents:
diff changeset
101 // TODO Auto-generated method stub
5b1a0574b406 *** empty log message ***
pin
parents:
diff changeset
102
5b1a0574b406 *** empty log message ***
pin
parents:
diff changeset
103 }
5b1a0574b406 *** empty log message ***
pin
parents:
diff changeset
104
5b1a0574b406 *** empty log message ***
pin
parents:
diff changeset
105 public static ServerSocketChannel open() {
5b1a0574b406 *** empty log message ***
pin
parents:
diff changeset
106 // TODO Auto-generated method stub
5b1a0574b406 *** empty log message ***
pin
parents:
diff changeset
107 return null;
5b1a0574b406 *** empty log message ***
pin
parents:
diff changeset
108 }
5b1a0574b406 *** empty log message ***
pin
parents:
diff changeset
109
5b1a0574b406 *** empty log message ***
pin
parents:
diff changeset
110 }