annotate rep/channel/SelectionKeySimulator.java @ 143:785a3e8ea858

*** empty log message ***
author kent
date Wed, 27 Aug 2008 22:48:10 +0900
parents 9faacdd6c9cb
children 72252e970a8b
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
143
785a3e8ea858 *** empty log message ***
kent
parents: 125
diff changeset
3 import java.nio.channels.SelectableChannel;
123
5b1a0574b406 *** empty log message ***
pin
parents:
diff changeset
4 import java.nio.channels.SelectionKey;
5b1a0574b406 *** empty log message ***
pin
parents:
diff changeset
5 import java.nio.channels.Selector;
5b1a0574b406 *** empty log message ***
pin
parents:
diff changeset
6
143
785a3e8ea858 *** empty log message ***
kent
parents: 125
diff changeset
7 public class SelectionKeySimulator<P> extends SelectionKey{
123
5b1a0574b406 *** empty log message ***
pin
parents:
diff changeset
8
5b1a0574b406 *** empty log message ***
pin
parents:
diff changeset
9 private int interestOpt;
143
785a3e8ea858 *** empty log message ***
kent
parents: 125
diff changeset
10 private SelectableChannel channel;
123
5b1a0574b406 *** empty log message ***
pin
parents:
diff changeset
11 private int ready;
5b1a0574b406 *** empty log message ***
pin
parents:
diff changeset
12 public Selector selector;
5b1a0574b406 *** empty log message ***
pin
parents:
diff changeset
13
143
785a3e8ea858 *** empty log message ***
kent
parents: 125
diff changeset
14 public SelectionKeySimulator(SelectableChannel cs, int opt, Selector _selector) {
123
5b1a0574b406 *** empty log message ***
pin
parents:
diff changeset
15 channel = cs;
5b1a0574b406 *** empty log message ***
pin
parents:
diff changeset
16 interestOpt = opt;
5b1a0574b406 *** empty log message ***
pin
parents:
diff changeset
17 selector = _selector;
5b1a0574b406 *** empty log message ***
pin
parents:
diff changeset
18 }
5b1a0574b406 *** empty log message ***
pin
parents:
diff changeset
19
5b1a0574b406 *** empty log message ***
pin
parents:
diff changeset
20 public boolean isAble() {
5b1a0574b406 *** empty log message ***
pin
parents:
diff changeset
21 if ( (interestOpt&OP_READ)!=0 && isReadable() )
5b1a0574b406 *** empty log message ***
pin
parents:
diff changeset
22 return true;
5b1a0574b406 *** empty log message ***
pin
parents:
diff changeset
23 else if( (interestOpt&OP_ACCEPT)!=0 && isAcceptable() )
5b1a0574b406 *** empty log message ***
pin
parents:
diff changeset
24 return true;
5b1a0574b406 *** empty log message ***
pin
parents:
diff changeset
25 else if( (interestOpt&OP_WRITE)!=0 && isWritable() )
5b1a0574b406 *** empty log message ***
pin
parents:
diff changeset
26 return true;
5b1a0574b406 *** empty log message ***
pin
parents:
diff changeset
27 else
5b1a0574b406 *** empty log message ***
pin
parents:
diff changeset
28 return false;
5b1a0574b406 *** empty log message ***
pin
parents:
diff changeset
29 }
5b1a0574b406 *** empty log message ***
pin
parents:
diff changeset
30
5b1a0574b406 *** empty log message ***
pin
parents:
diff changeset
31 public void setFlag() {
143
785a3e8ea858 *** empty log message ***
kent
parents: 125
diff changeset
32 SelectableChannelSimulator<?> scs = (SelectableChannelSimulator<?>) channel;
123
5b1a0574b406 *** empty log message ***
pin
parents:
diff changeset
33 ready = 0;
143
785a3e8ea858 *** empty log message ***
kent
parents: 125
diff changeset
34 if(scs.isAcceptable()) ready |= OP_ACCEPT;
785a3e8ea858 *** empty log message ***
kent
parents: 125
diff changeset
35 if(scs.isReadable()) ready |= OP_READ;
785a3e8ea858 *** empty log message ***
kent
parents: 125
diff changeset
36 if(scs.isWritable()) ready |= OP_WRITE;
123
5b1a0574b406 *** empty log message ***
pin
parents:
diff changeset
37 }
5b1a0574b406 *** empty log message ***
pin
parents:
diff changeset
38
143
785a3e8ea858 *** empty log message ***
kent
parents: 125
diff changeset
39 public SelectableChannel channel() {
123
5b1a0574b406 *** empty log message ***
pin
parents:
diff changeset
40 return channel;
5b1a0574b406 *** empty log message ***
pin
parents:
diff changeset
41 }
5b1a0574b406 *** empty log message ***
pin
parents:
diff changeset
42
5b1a0574b406 *** empty log message ***
pin
parents:
diff changeset
43
5b1a0574b406 *** empty log message ***
pin
parents:
diff changeset
44 @Override
5b1a0574b406 *** empty log message ***
pin
parents:
diff changeset
45 public void cancel() {
143
785a3e8ea858 *** empty log message ***
kent
parents: 125
diff changeset
46 System.err.println("cancel is not implemented yet.");
785a3e8ea858 *** empty log message ***
kent
parents: 125
diff changeset
47 //selector.
123
5b1a0574b406 *** empty log message ***
pin
parents:
diff changeset
48 }
5b1a0574b406 *** empty log message ***
pin
parents:
diff changeset
49
5b1a0574b406 *** empty log message ***
pin
parents:
diff changeset
50 @Override
5b1a0574b406 *** empty log message ***
pin
parents:
diff changeset
51 public int interestOps() {
5b1a0574b406 *** empty log message ***
pin
parents:
diff changeset
52 return interestOpt;
5b1a0574b406 *** empty log message ***
pin
parents:
diff changeset
53 }
5b1a0574b406 *** empty log message ***
pin
parents:
diff changeset
54
5b1a0574b406 *** empty log message ***
pin
parents:
diff changeset
55 @Override
5b1a0574b406 *** empty log message ***
pin
parents:
diff changeset
56 public SelectionKey interestOps(int ops) {
5b1a0574b406 *** empty log message ***
pin
parents:
diff changeset
57 interestOpt = ops;
5b1a0574b406 *** empty log message ***
pin
parents:
diff changeset
58 return this;
5b1a0574b406 *** empty log message ***
pin
parents:
diff changeset
59 }
5b1a0574b406 *** empty log message ***
pin
parents:
diff changeset
60
5b1a0574b406 *** empty log message ***
pin
parents:
diff changeset
61 @Override
5b1a0574b406 *** empty log message ***
pin
parents:
diff changeset
62 public boolean isValid() {
5b1a0574b406 *** empty log message ***
pin
parents:
diff changeset
63 return true;
5b1a0574b406 *** empty log message ***
pin
parents:
diff changeset
64 }
5b1a0574b406 *** empty log message ***
pin
parents:
diff changeset
65
5b1a0574b406 *** empty log message ***
pin
parents:
diff changeset
66 @Override
5b1a0574b406 *** empty log message ***
pin
parents:
diff changeset
67 public int readyOps() {
5b1a0574b406 *** empty log message ***
pin
parents:
diff changeset
68 return ready;
5b1a0574b406 *** empty log message ***
pin
parents:
diff changeset
69 }
5b1a0574b406 *** empty log message ***
pin
parents:
diff changeset
70
5b1a0574b406 *** empty log message ***
pin
parents:
diff changeset
71 @Override
5b1a0574b406 *** empty log message ***
pin
parents:
diff changeset
72 public Selector selector() {
5b1a0574b406 *** empty log message ***
pin
parents:
diff changeset
73 return selector;
5b1a0574b406 *** empty log message ***
pin
parents:
diff changeset
74 }
5b1a0574b406 *** empty log message ***
pin
parents:
diff changeset
75
5b1a0574b406 *** empty log message ***
pin
parents:
diff changeset
76 }