comparison rep/channel/REPSocketChannel.java @ 208:302c4a0afab6

*** empty log message ***
author kono
date Sat, 30 Aug 2008 12:15:21 +0900
parents be219ba8b39c
children 44d502851c9e
comparison
equal deleted inserted replaced
207:9aeade335af0 208:302c4a0afab6
8 import java.nio.channels.SelectableChannel; 8 import java.nio.channels.SelectableChannel;
9 import java.nio.channels.SelectionKey; 9 import java.nio.channels.SelectionKey;
10 import java.nio.channels.Selector; 10 import java.nio.channels.Selector;
11 import java.nio.channels.SocketChannel; 11 import java.nio.channels.SocketChannel;
12 import java.nio.channels.spi.SelectorProvider; 12 import java.nio.channels.spi.SelectorProvider;
13 import java.util.HashMap;
13 14
14 public class REPSocketChannel<P> extends SelectableChannel{ 15 public class REPSocketChannel<P> extends SelectableChannel{
15 16
16 public SocketChannel sc; 17 public SocketChannel sc;
17 private REPPack<P> pack; 18 private REPPack<P> pack;
19 static public HashMap<SelectableChannel,SelectableChannel> channels = new HashMap<SelectableChannel,SelectableChannel>();
18 20
19 public REPSocketChannel(SocketChannel channel, REPPack<P> packer) { 21 public REPSocketChannel(SocketChannel channel, REPPack<P> packer) {
20 sc = channel; 22 sc = channel;
21 pack = packer; 23 pack = packer;
24 addChannel(sc,this);
22 } 25 }
23 26
24 public REPSocketChannel(SelectableChannel channel, REPPack<P> packer) { 27 public REPSocketChannel(SelectableChannel channel, REPPack<P> packer) {
25 sc = (SocketChannel)channel; 28 sc = (SocketChannel)channel;
26 pack = packer; 29 pack = packer;
30 addChannel(sc,this);
27 } 31 }
28 32
33 public static void addChannel(SelectableChannel sc,SelectableChannel rc) {
34 channels.put(sc, rc);
35 }
36
37 public void close1() throws IOException {
38 removeChannel(sc);
39 sc.close();
40 }
41
42 public static void removeChannel(SelectableChannel sc) throws IOException {
43 if(channels.containsKey(sc)) channels.remove(sc);
44 }
45
29 @Override 46 @Override
30 public Object blockingLock() { 47 public Object blockingLock() {
31 return sc.blockingLock(); 48 return sc.blockingLock();
32 } 49 }
33 50