Mercurial > hg > RemoteEditor > REPSessionManager
view rep/channel/REPServerSocketChannel.java @ 183:eb89a73976fa
*** empty log message ***
author | kent |
---|---|
date | Fri, 29 Aug 2008 13:40:29 +0900 |
parents | 4ed6393ec68e |
children | 3c82100cdadd |
line wrap: on
line source
package rep.channel; import java.io.IOException; import java.net.ServerSocket; import java.nio.channels.ClosedChannelException; import java.nio.channels.SelectionKey; import java.nio.channels.ServerSocketChannel; import java.nio.channels.SocketChannel; import java.nio.channels.spi.SelectorProvider; /* * シミュレーションでは inheritance のServerChannelSimulator を生成、 * リアルコミュニケーションでは 自身を生成、内部にもつ ServerSocketChannelを扱う */ public class REPServerSocketChannel<P> extends ServerSocketChannel{ public static boolean isSimulation; private ServerSocketChannel ss; protected REPServerSocketChannel(SelectorProvider provider) { super(provider); } public REPServerSocketChannel(ServerSocketChannel channel){ super(null); ss = channel; } public REPServerSocketChannel() { super(null); } public static <T> REPServerSocketChannel<T> open() throws IOException{ if(isSimulation){ return new ServerChannelSimulator<T>(); }else{ return new REPServerSocketChannel<T>(ServerSocketChannel.open()); } } public REPSocketChannel<P> accept1() throws IOException { return new REPSocketChannel<P>(ss.accept()); } @Override public ServerSocket socket() { return ss.socket(); } @Override protected void implCloseSelectableChannel() throws IOException { ss.close(); } @Override protected void implConfigureBlocking(boolean block) throws IOException { ss.configureBlocking(block); } public SelectionKey register(REPSelector sel, int ops, Object att) throws ClosedChannelException { assert(!isSimulation); REPSelector selector = sel; if(sel!=null) return selector.register(ss, ops, att); else return null; } @Override public SocketChannel accept() throws IOException { // TODO Auto-generated method stub return null; } }