annotate rep/channel/REPSelectionKey.java @ 437:2c00fa39dd84

minor fix
author one
date Fri, 03 Sep 2010 10:22:39 +0900
parents c5be84d53c7f
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
184
3c82100cdadd *** empty log message ***
kent
parents:
diff changeset
1 package rep.channel;
3c82100cdadd *** empty log message ***
kent
parents:
diff changeset
2
194
be219ba8b39c *** empty log message ***
kono
parents: 184
diff changeset
3 import java.io.IOException;
184
3c82100cdadd *** empty log message ***
kent
parents:
diff changeset
4 import java.nio.channels.SelectableChannel;
3c82100cdadd *** empty log message ***
kent
parents:
diff changeset
5 import java.nio.channels.SelectionKey;
3c82100cdadd *** empty log message ***
kent
parents:
diff changeset
6 import java.nio.channels.Selector;
194
be219ba8b39c *** empty log message ***
kono
parents: 184
diff changeset
7 import java.nio.channels.ServerSocketChannel;
203
4c0a94836357 *** empty log message ***
kono
parents: 194
diff changeset
8 import java.nio.channels.SocketChannel;
184
3c82100cdadd *** empty log message ***
kent
parents:
diff changeset
9
3c82100cdadd *** empty log message ***
kent
parents:
diff changeset
10
194
be219ba8b39c *** empty log message ***
kono
parents: 184
diff changeset
11 public class REPSelectionKey<P> extends SelectionKey {
be219ba8b39c *** empty log message ***
kono
parents: 184
diff changeset
12 SelectionKey key;
219
13e0520470dc *** empty log message ***
kono
parents: 217
diff changeset
13 private REPSelector<P> selector;
194
be219ba8b39c *** empty log message ***
kono
parents: 184
diff changeset
14
221
6cd4aab9fea3 *** empty log message ***
kono
parents: 219
diff changeset
15 public REPSelectionKey() {
6cd4aab9fea3 *** empty log message ***
kono
parents: 219
diff changeset
16
6cd4aab9fea3 *** empty log message ***
kono
parents: 219
diff changeset
17 }
6cd4aab9fea3 *** empty log message ***
kono
parents: 219
diff changeset
18
219
13e0520470dc *** empty log message ***
kono
parents: 217
diff changeset
19 public REPSelectionKey(SelectionKey key,REPSelector<P>s) {
194
be219ba8b39c *** empty log message ***
kono
parents: 184
diff changeset
20 this.key = key;
219
13e0520470dc *** empty log message ***
kono
parents: 217
diff changeset
21 this.selector = s;
214
ed43dc6ccb07 *** empty log message ***
kent
parents: 208
diff changeset
22 attach(key.attachment());
194
be219ba8b39c *** empty log message ***
kono
parents: 184
diff changeset
23 }
be219ba8b39c *** empty log message ***
kono
parents: 184
diff changeset
24
184
3c82100cdadd *** empty log message ***
kent
parents:
diff changeset
25 @Override
3c82100cdadd *** empty log message ***
kent
parents:
diff changeset
26 public void cancel() {
194
be219ba8b39c *** empty log message ***
kono
parents: 184
diff changeset
27 key.cancel();
184
3c82100cdadd *** empty log message ***
kent
parents:
diff changeset
28 }
3c82100cdadd *** empty log message ***
kent
parents:
diff changeset
29
3c82100cdadd *** empty log message ***
kent
parents:
diff changeset
30 @Override
3c82100cdadd *** empty log message ***
kent
parents:
diff changeset
31 public SelectableChannel channel() {
217
4deaaaa6354e *** empty log message ***
kono
parents: 214
diff changeset
32 if (REPServerSocketChannel.isSimulation) return key.channel();
275
3be92eb54b1c *** empty log message ***
kono
parents: 273
diff changeset
33 SelectableChannel sc = key.channel();
3be92eb54b1c *** empty log message ***
kono
parents: 273
diff changeset
34 SelectableChannel rsc = REPSocketChannel.channels.get(sc);
3be92eb54b1c *** empty log message ***
kono
parents: 273
diff changeset
35 return rsc;
194
be219ba8b39c *** empty log message ***
kono
parents: 184
diff changeset
36 }
184
3c82100cdadd *** empty log message ***
kent
parents:
diff changeset
37
308
c5be84d53c7f *** empty log message ***
kono
parents: 275
diff changeset
38 @SuppressWarnings("unchecked")
c5be84d53c7f *** empty log message ***
kono
parents: 275
diff changeset
39 public REPSocketChannel<P> channel1() {
c5be84d53c7f *** empty log message ***
kono
parents: 275
diff changeset
40 assert (!REPServerSocketChannel.isSimulation);
c5be84d53c7f *** empty log message ***
kono
parents: 275
diff changeset
41 SelectableChannel sc = key.channel();
c5be84d53c7f *** empty log message ***
kono
parents: 275
diff changeset
42 REPSocketChannel<P> rsc = (REPSocketChannel<P>) REPSocketChannel.channels.get(sc);
c5be84d53c7f *** empty log message ***
kono
parents: 275
diff changeset
43 return rsc;
c5be84d53c7f *** empty log message ***
kono
parents: 275
diff changeset
44 }
c5be84d53c7f *** empty log message ***
kono
parents: 275
diff changeset
45
c5be84d53c7f *** empty log message ***
kono
parents: 275
diff changeset
46 @SuppressWarnings("unchecked")
c5be84d53c7f *** empty log message ***
kono
parents: 275
diff changeset
47 public REPServerSocketChannel<P> serverSocketChannel() {
c5be84d53c7f *** empty log message ***
kono
parents: 275
diff changeset
48 assert (!REPServerSocketChannel.isSimulation);
c5be84d53c7f *** empty log message ***
kono
parents: 275
diff changeset
49 SelectableChannel sc = key.channel();
c5be84d53c7f *** empty log message ***
kono
parents: 275
diff changeset
50 REPServerSocketChannel<P> rsc = (REPServerSocketChannel<P>) REPSocketChannel.channels.get(sc);
c5be84d53c7f *** empty log message ***
kono
parents: 275
diff changeset
51 return rsc;
c5be84d53c7f *** empty log message ***
kono
parents: 275
diff changeset
52 }
c5be84d53c7f *** empty log message ***
kono
parents: 275
diff changeset
53
184
3c82100cdadd *** empty log message ***
kent
parents:
diff changeset
54 @Override
3c82100cdadd *** empty log message ***
kent
parents:
diff changeset
55 public int interestOps() {
194
be219ba8b39c *** empty log message ***
kono
parents: 184
diff changeset
56 return key.interestOps();
184
3c82100cdadd *** empty log message ***
kent
parents:
diff changeset
57 }
3c82100cdadd *** empty log message ***
kent
parents:
diff changeset
58
3c82100cdadd *** empty log message ***
kent
parents:
diff changeset
59 @Override
3c82100cdadd *** empty log message ***
kent
parents:
diff changeset
60 public SelectionKey interestOps(int ops) {
194
be219ba8b39c *** empty log message ***
kono
parents: 184
diff changeset
61 return key.interestOps(ops);
184
3c82100cdadd *** empty log message ***
kent
parents:
diff changeset
62 }
3c82100cdadd *** empty log message ***
kent
parents:
diff changeset
63
3c82100cdadd *** empty log message ***
kent
parents:
diff changeset
64 @Override
3c82100cdadd *** empty log message ***
kent
parents:
diff changeset
65 public boolean isValid() {
194
be219ba8b39c *** empty log message ***
kono
parents: 184
diff changeset
66 return key.isValid();
184
3c82100cdadd *** empty log message ***
kent
parents:
diff changeset
67 }
3c82100cdadd *** empty log message ***
kent
parents:
diff changeset
68
3c82100cdadd *** empty log message ***
kent
parents:
diff changeset
69 @Override
3c82100cdadd *** empty log message ***
kent
parents:
diff changeset
70 public int readyOps() {
194
be219ba8b39c *** empty log message ***
kono
parents: 184
diff changeset
71 return key.readyOps();
184
3c82100cdadd *** empty log message ***
kent
parents:
diff changeset
72 }
3c82100cdadd *** empty log message ***
kent
parents:
diff changeset
73
3c82100cdadd *** empty log message ***
kent
parents:
diff changeset
74 @Override
3c82100cdadd *** empty log message ***
kent
parents:
diff changeset
75 public Selector selector() {
219
13e0520470dc *** empty log message ***
kono
parents: 217
diff changeset
76 return selector;
184
3c82100cdadd *** empty log message ***
kent
parents:
diff changeset
77 }
3c82100cdadd *** empty log message ***
kent
parents:
diff changeset
78
194
be219ba8b39c *** empty log message ***
kono
parents: 184
diff changeset
79 public REPSocketChannel<P> accept(REPPack<P> pack) throws IOException {
be219ba8b39c *** empty log message ***
kono
parents: 184
diff changeset
80 assert(!REPServerSocketChannel.isSimulation);
203
4c0a94836357 *** empty log message ***
kono
parents: 194
diff changeset
81 if (!key.isAcceptable()) throw new IOException();
4c0a94836357 *** empty log message ***
kono
parents: 194
diff changeset
82 ServerSocketChannel ssc = (ServerSocketChannel)key.channel();
4c0a94836357 *** empty log message ***
kono
parents: 194
diff changeset
83 if (ssc==null) return null;
4c0a94836357 *** empty log message ***
kono
parents: 194
diff changeset
84 SocketChannel ss = (SocketChannel)ssc.accept();
240
168dd841be51 selected key Interator fix.
kono
parents: 221
diff changeset
85 //System.err.println("Accept in SelectionKey "+ss);
203
4c0a94836357 *** empty log message ***
kono
parents: 194
diff changeset
86 if (ss==null) return null;
437
2c00fa39dd84 minor fix
one
parents: 308
diff changeset
87 return new REPSocketChannel<P>(ss, pack);
194
be219ba8b39c *** empty log message ***
kono
parents: 184
diff changeset
88 }
be219ba8b39c *** empty log message ***
kono
parents: 184
diff changeset
89
be219ba8b39c *** empty log message ***
kono
parents: 184
diff changeset
90
184
3c82100cdadd *** empty log message ***
kent
parents:
diff changeset
91 }