Mercurial > hg > RemoteEditor > REPSessionManager
view rep/channel/REPSelectionKey.java @ 287:1ff8bfc0a99a test-editor
*** empty log message ***
author | kono |
---|---|
date | Sun, 28 Sep 2008 15:46:36 +0900 |
parents | 3be92eb54b1c |
children | c5be84d53c7f |
line wrap: on
line source
package rep.channel; import java.io.IOException; import java.nio.channels.SelectableChannel; import java.nio.channels.SelectionKey; import java.nio.channels.Selector; import java.nio.channels.ServerSocketChannel; import java.nio.channels.SocketChannel; public class REPSelectionKey<P> extends SelectionKey { SelectionKey key; private REPSelector<P> selector; public REPSelectionKey() { } public REPSelectionKey(SelectionKey key,REPSelector<P>s) { this.key = key; this.selector = s; attach(key.attachment()); } @Override public void cancel() { key.cancel(); } @Override public SelectableChannel channel() { if (REPServerSocketChannel.isSimulation) return key.channel(); SelectableChannel sc = key.channel(); SelectableChannel rsc = REPSocketChannel.channels.get(sc); return rsc; } @Override public int interestOps() { return key.interestOps(); } @Override public SelectionKey interestOps(int ops) { return key.interestOps(ops); } @Override public boolean isValid() { return key.isValid(); } @Override public int readyOps() { return key.readyOps(); } @Override public Selector selector() { return selector; } @SuppressWarnings("unchecked") public REPSocketChannel<P> accept(REPPack<P> pack) throws IOException { assert(!REPServerSocketChannel.isSimulation); if (!key.isAcceptable()) throw new IOException(); ServerSocketChannel ssc = (ServerSocketChannel)key.channel(); if (ssc==null) return null; SocketChannel ss = (SocketChannel)ssc.accept(); //System.err.println("Accept in SelectionKey "+ss); if (ss==null) return null; return new REPSocketChannel(ss, pack); } }