Mercurial > hg > RemoteEditor > REPSessionManager
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 |