annotate src/rep/channel/REPSelector.java @ 205:540d7a8a9e33

add sessionmanager's file
author one
date Sat, 18 Dec 2010 17:35:25 +0900
parents 3133040ee4f4
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
193
3133040ee4f4 (no commit message)
one
parents:
diff changeset
1 package rep.channel;
3133040ee4f4 (no commit message)
one
parents:
diff changeset
2
3133040ee4f4 (no commit message)
one
parents:
diff changeset
3 import java.io.IOException;
3133040ee4f4 (no commit message)
one
parents:
diff changeset
4 import java.nio.channels.ClosedChannelException;
3133040ee4f4 (no commit message)
one
parents:
diff changeset
5 import java.nio.channels.SelectableChannel;
3133040ee4f4 (no commit message)
one
parents:
diff changeset
6 import java.nio.channels.SelectionKey;
3133040ee4f4 (no commit message)
one
parents:
diff changeset
7 import java.nio.channels.Selector;
3133040ee4f4 (no commit message)
one
parents:
diff changeset
8 import java.nio.channels.spi.AbstractSelector;
3133040ee4f4 (no commit message)
one
parents:
diff changeset
9 import java.nio.channels.spi.SelectorProvider;
3133040ee4f4 (no commit message)
one
parents:
diff changeset
10 import java.util.HashSet;
3133040ee4f4 (no commit message)
one
parents:
diff changeset
11 import java.util.Iterator;
3133040ee4f4 (no commit message)
one
parents:
diff changeset
12 import java.util.Set;
3133040ee4f4 (no commit message)
one
parents:
diff changeset
13
3133040ee4f4 (no commit message)
one
parents:
diff changeset
14
3133040ee4f4 (no commit message)
one
parents:
diff changeset
15 public class REPSelector<P> extends Selector{
3133040ee4f4 (no commit message)
one
parents:
diff changeset
16
3133040ee4f4 (no commit message)
one
parents:
diff changeset
17 Selector selector;
3133040ee4f4 (no commit message)
one
parents:
diff changeset
18
3133040ee4f4 (no commit message)
one
parents:
diff changeset
19 public REPSelector(AbstractSelector selector) {
3133040ee4f4 (no commit message)
one
parents:
diff changeset
20 this.selector = selector;
3133040ee4f4 (no commit message)
one
parents:
diff changeset
21 }
3133040ee4f4 (no commit message)
one
parents:
diff changeset
22
3133040ee4f4 (no commit message)
one
parents:
diff changeset
23 public static <T>REPSelector<T> create() throws IOException{
3133040ee4f4 (no commit message)
one
parents:
diff changeset
24 if(REPServerSocketChannel.isSimulation){
3133040ee4f4 (no commit message)
one
parents:
diff changeset
25 return new SelectorSimulator<T>();
3133040ee4f4 (no commit message)
one
parents:
diff changeset
26 }
3133040ee4f4 (no commit message)
one
parents:
diff changeset
27 return new REPSelector<T>(SelectorProvider.provider().openSelector());
3133040ee4f4 (no commit message)
one
parents:
diff changeset
28 }
3133040ee4f4 (no commit message)
one
parents:
diff changeset
29
3133040ee4f4 (no commit message)
one
parents:
diff changeset
30 @Override
3133040ee4f4 (no commit message)
one
parents:
diff changeset
31 public void close() throws IOException {
3133040ee4f4 (no commit message)
one
parents:
diff changeset
32 selector.close();
3133040ee4f4 (no commit message)
one
parents:
diff changeset
33 }
3133040ee4f4 (no commit message)
one
parents:
diff changeset
34
3133040ee4f4 (no commit message)
one
parents:
diff changeset
35 @Override
3133040ee4f4 (no commit message)
one
parents:
diff changeset
36 public boolean isOpen() {
3133040ee4f4 (no commit message)
one
parents:
diff changeset
37 return selector.isOpen();
3133040ee4f4 (no commit message)
one
parents:
diff changeset
38 }
3133040ee4f4 (no commit message)
one
parents:
diff changeset
39
3133040ee4f4 (no commit message)
one
parents:
diff changeset
40 @Override
3133040ee4f4 (no commit message)
one
parents:
diff changeset
41 public Set<SelectionKey> keys() {
3133040ee4f4 (no commit message)
one
parents:
diff changeset
42 return selector.keys();
3133040ee4f4 (no commit message)
one
parents:
diff changeset
43 }
3133040ee4f4 (no commit message)
one
parents:
diff changeset
44
3133040ee4f4 (no commit message)
one
parents:
diff changeset
45 @Override
3133040ee4f4 (no commit message)
one
parents:
diff changeset
46 public SelectorProvider provider() {
3133040ee4f4 (no commit message)
one
parents:
diff changeset
47 return selector.provider();
3133040ee4f4 (no commit message)
one
parents:
diff changeset
48 }
3133040ee4f4 (no commit message)
one
parents:
diff changeset
49
3133040ee4f4 (no commit message)
one
parents:
diff changeset
50 @Override
3133040ee4f4 (no commit message)
one
parents:
diff changeset
51 public int select() throws IOException {
3133040ee4f4 (no commit message)
one
parents:
diff changeset
52 return selector.select();
3133040ee4f4 (no commit message)
one
parents:
diff changeset
53 }
3133040ee4f4 (no commit message)
one
parents:
diff changeset
54
3133040ee4f4 (no commit message)
one
parents:
diff changeset
55 @Override
3133040ee4f4 (no commit message)
one
parents:
diff changeset
56 public int select(long timeout) throws IOException {
3133040ee4f4 (no commit message)
one
parents:
diff changeset
57 return selector.select(timeout);
3133040ee4f4 (no commit message)
one
parents:
diff changeset
58 }
3133040ee4f4 (no commit message)
one
parents:
diff changeset
59
3133040ee4f4 (no commit message)
one
parents:
diff changeset
60 @Override
3133040ee4f4 (no commit message)
one
parents:
diff changeset
61 public int selectNow() throws IOException {
3133040ee4f4 (no commit message)
one
parents:
diff changeset
62 return selector.selectNow();
3133040ee4f4 (no commit message)
one
parents:
diff changeset
63 }
3133040ee4f4 (no commit message)
one
parents:
diff changeset
64
3133040ee4f4 (no commit message)
one
parents:
diff changeset
65 @Override
3133040ee4f4 (no commit message)
one
parents:
diff changeset
66 public Set<SelectionKey> selectedKeys() {
3133040ee4f4 (no commit message)
one
parents:
diff changeset
67 return selector.selectedKeys();
3133040ee4f4 (no commit message)
one
parents:
diff changeset
68 }
3133040ee4f4 (no commit message)
one
parents:
diff changeset
69
3133040ee4f4 (no commit message)
one
parents:
diff changeset
70 @Override
3133040ee4f4 (no commit message)
one
parents:
diff changeset
71 public Selector wakeup() {
3133040ee4f4 (no commit message)
one
parents:
diff changeset
72 return selector.wakeup();
3133040ee4f4 (no commit message)
one
parents:
diff changeset
73 }
3133040ee4f4 (no commit message)
one
parents:
diff changeset
74
3133040ee4f4 (no commit message)
one
parents:
diff changeset
75 public SelectionKey register(SelectableChannel ch, int ops, Object att) throws ClosedChannelException{
3133040ee4f4 (no commit message)
one
parents:
diff changeset
76 return ch.register(selector, ops, att);
3133040ee4f4 (no commit message)
one
parents:
diff changeset
77 }
3133040ee4f4 (no commit message)
one
parents:
diff changeset
78
3133040ee4f4 (no commit message)
one
parents:
diff changeset
79 public Set<REPSelectionKey<P>> selectedKeys1() {
3133040ee4f4 (no commit message)
one
parents:
diff changeset
80 Set<SelectionKey> keys = selector.selectedKeys();
3133040ee4f4 (no commit message)
one
parents:
diff changeset
81 //System.err.println("Selected keys = "+keys);
3133040ee4f4 (no commit message)
one
parents:
diff changeset
82 HashSet<REPSelectionKey<P>> newKeys = new HashSet<REPSelectionKey<P>>();
3133040ee4f4 (no commit message)
one
parents:
diff changeset
83
3133040ee4f4 (no commit message)
one
parents:
diff changeset
84 for (Iterator<SelectionKey> it = keys.iterator();it.hasNext(); ) {
3133040ee4f4 (no commit message)
one
parents:
diff changeset
85 SelectionKey k = it.next();
3133040ee4f4 (no commit message)
one
parents:
diff changeset
86 newKeys.add(new REPSelectionKey<P>(k,this));
3133040ee4f4 (no commit message)
one
parents:
diff changeset
87 it.remove();
3133040ee4f4 (no commit message)
one
parents:
diff changeset
88 }
3133040ee4f4 (no commit message)
one
parents:
diff changeset
89 return newKeys;
3133040ee4f4 (no commit message)
one
parents:
diff changeset
90 }
3133040ee4f4 (no commit message)
one
parents:
diff changeset
91
3133040ee4f4 (no commit message)
one
parents:
diff changeset
92
3133040ee4f4 (no commit message)
one
parents:
diff changeset
93
3133040ee4f4 (no commit message)
one
parents:
diff changeset
94 }