annotate rep/channel/REPSelector.java @ 168:4ed6393ec68e

*** empty log message ***
author kono
date Thu, 28 Aug 2008 18:54:01 +0900
parents 785a3e8ea858
children 72252e970a8b
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
125
9faacdd6c9cb *** empty log message ***
pin
parents:
diff changeset
1 package rep.channel;
9faacdd6c9cb *** empty log message ***
pin
parents:
diff changeset
2
9faacdd6c9cb *** empty log message ***
pin
parents:
diff changeset
3 import java.io.IOException;
143
785a3e8ea858 *** empty log message ***
kent
parents: 125
diff changeset
4 import java.nio.channels.ClosedChannelException;
785a3e8ea858 *** empty log message ***
kent
parents: 125
diff changeset
5 import java.nio.channels.SelectableChannel;
125
9faacdd6c9cb *** empty log message ***
pin
parents:
diff changeset
6 import java.nio.channels.SelectionKey;
9faacdd6c9cb *** empty log message ***
pin
parents:
diff changeset
7 import java.nio.channels.Selector;
9faacdd6c9cb *** empty log message ***
pin
parents:
diff changeset
8 import java.nio.channels.spi.AbstractSelector;
9faacdd6c9cb *** empty log message ***
pin
parents:
diff changeset
9 import java.nio.channels.spi.SelectorProvider;
9faacdd6c9cb *** empty log message ***
pin
parents:
diff changeset
10 import java.util.Set;
9faacdd6c9cb *** empty log message ***
pin
parents:
diff changeset
11
9faacdd6c9cb *** empty log message ***
pin
parents:
diff changeset
12 public class REPSelector extends Selector{
9faacdd6c9cb *** empty log message ***
pin
parents:
diff changeset
13
9faacdd6c9cb *** empty log message ***
pin
parents:
diff changeset
14 Selector selector;
9faacdd6c9cb *** empty log message ***
pin
parents:
diff changeset
15
9faacdd6c9cb *** empty log message ***
pin
parents:
diff changeset
16 public REPSelector(AbstractSelector selector) {
9faacdd6c9cb *** empty log message ***
pin
parents:
diff changeset
17 this.selector = selector;
9faacdd6c9cb *** empty log message ***
pin
parents:
diff changeset
18 }
9faacdd6c9cb *** empty log message ***
pin
parents:
diff changeset
19
143
785a3e8ea858 *** empty log message ***
kent
parents: 125
diff changeset
20 public static REPSelector create() throws IOException{
125
9faacdd6c9cb *** empty log message ***
pin
parents:
diff changeset
21 if(REPServerSocketChannel.isSimulation){
9faacdd6c9cb *** empty log message ***
pin
parents:
diff changeset
22 return new SelectorSimulator();
9faacdd6c9cb *** empty log message ***
pin
parents:
diff changeset
23 }
9faacdd6c9cb *** empty log message ***
pin
parents:
diff changeset
24 return new REPSelector(SelectorProvider.provider().openSelector());
9faacdd6c9cb *** empty log message ***
pin
parents:
diff changeset
25 }
9faacdd6c9cb *** empty log message ***
pin
parents:
diff changeset
26
9faacdd6c9cb *** empty log message ***
pin
parents:
diff changeset
27 @Override
9faacdd6c9cb *** empty log message ***
pin
parents:
diff changeset
28 public void close() throws IOException {
9faacdd6c9cb *** empty log message ***
pin
parents:
diff changeset
29 selector.close();
9faacdd6c9cb *** empty log message ***
pin
parents:
diff changeset
30 }
9faacdd6c9cb *** empty log message ***
pin
parents:
diff changeset
31
9faacdd6c9cb *** empty log message ***
pin
parents:
diff changeset
32 @Override
9faacdd6c9cb *** empty log message ***
pin
parents:
diff changeset
33 public boolean isOpen() {
9faacdd6c9cb *** empty log message ***
pin
parents:
diff changeset
34 return selector.isOpen();
9faacdd6c9cb *** empty log message ***
pin
parents:
diff changeset
35 }
9faacdd6c9cb *** empty log message ***
pin
parents:
diff changeset
36
9faacdd6c9cb *** empty log message ***
pin
parents:
diff changeset
37 @Override
9faacdd6c9cb *** empty log message ***
pin
parents:
diff changeset
38 public Set<SelectionKey> keys() {
9faacdd6c9cb *** empty log message ***
pin
parents:
diff changeset
39 return selector.keys();
9faacdd6c9cb *** empty log message ***
pin
parents:
diff changeset
40 }
9faacdd6c9cb *** empty log message ***
pin
parents:
diff changeset
41
9faacdd6c9cb *** empty log message ***
pin
parents:
diff changeset
42 @Override
9faacdd6c9cb *** empty log message ***
pin
parents:
diff changeset
43 public SelectorProvider provider() {
9faacdd6c9cb *** empty log message ***
pin
parents:
diff changeset
44 return selector.provider();
9faacdd6c9cb *** empty log message ***
pin
parents:
diff changeset
45 }
9faacdd6c9cb *** empty log message ***
pin
parents:
diff changeset
46
9faacdd6c9cb *** empty log message ***
pin
parents:
diff changeset
47 @Override
9faacdd6c9cb *** empty log message ***
pin
parents:
diff changeset
48 public int select() throws IOException {
9faacdd6c9cb *** empty log message ***
pin
parents:
diff changeset
49 return selector.select();
9faacdd6c9cb *** empty log message ***
pin
parents:
diff changeset
50 }
9faacdd6c9cb *** empty log message ***
pin
parents:
diff changeset
51
9faacdd6c9cb *** empty log message ***
pin
parents:
diff changeset
52 @Override
9faacdd6c9cb *** empty log message ***
pin
parents:
diff changeset
53 public int select(long timeout) throws IOException {
9faacdd6c9cb *** empty log message ***
pin
parents:
diff changeset
54 return selector.select(timeout);
9faacdd6c9cb *** empty log message ***
pin
parents:
diff changeset
55 }
9faacdd6c9cb *** empty log message ***
pin
parents:
diff changeset
56
9faacdd6c9cb *** empty log message ***
pin
parents:
diff changeset
57 @Override
9faacdd6c9cb *** empty log message ***
pin
parents:
diff changeset
58 public int selectNow() throws IOException {
9faacdd6c9cb *** empty log message ***
pin
parents:
diff changeset
59 return selector.selectNow();
9faacdd6c9cb *** empty log message ***
pin
parents:
diff changeset
60 }
9faacdd6c9cb *** empty log message ***
pin
parents:
diff changeset
61
9faacdd6c9cb *** empty log message ***
pin
parents:
diff changeset
62 @Override
9faacdd6c9cb *** empty log message ***
pin
parents:
diff changeset
63 public Set<SelectionKey> selectedKeys() {
9faacdd6c9cb *** empty log message ***
pin
parents:
diff changeset
64 return selector.selectedKeys();
9faacdd6c9cb *** empty log message ***
pin
parents:
diff changeset
65 }
9faacdd6c9cb *** empty log message ***
pin
parents:
diff changeset
66
9faacdd6c9cb *** empty log message ***
pin
parents:
diff changeset
67 @Override
9faacdd6c9cb *** empty log message ***
pin
parents:
diff changeset
68 public Selector wakeup() {
9faacdd6c9cb *** empty log message ***
pin
parents:
diff changeset
69 return selector.wakeup();
9faacdd6c9cb *** empty log message ***
pin
parents:
diff changeset
70 }
9faacdd6c9cb *** empty log message ***
pin
parents:
diff changeset
71
168
4ed6393ec68e *** empty log message ***
kono
parents: 143
diff changeset
72 public SelectionKey register(SelectableChannel ch, int ops, Object att) throws ClosedChannelException{
4ed6393ec68e *** empty log message ***
kono
parents: 143
diff changeset
73 return ch.register(selector, ops, att);
143
785a3e8ea858 *** empty log message ***
kent
parents: 125
diff changeset
74 }
168
4ed6393ec68e *** empty log message ***
kono
parents: 143
diff changeset
75
143
785a3e8ea858 *** empty log message ***
kent
parents: 125
diff changeset
76
785a3e8ea858 *** empty log message ***
kent
parents: 125
diff changeset
77
125
9faacdd6c9cb *** empty log message ***
pin
parents:
diff changeset
78 }