view rep/channel/REPSelector.java @ 184:3c82100cdadd

*** empty log message ***
author kent
date Fri, 29 Aug 2008 16:38:11 +0900
parents 72252e970a8b
children 63701e2a2fe8
line wrap: on
line source

package rep.channel;

import java.io.IOException;
import java.nio.channels.ClosedChannelException;
import java.nio.channels.SelectableChannel;
import java.nio.channels.SelectionKey;
import java.nio.channels.Selector;
import java.nio.channels.spi.AbstractSelector;
import java.nio.channels.spi.SelectorProvider;
import java.util.Set;

public class REPSelector extends Selector{
	
	Selector selector;
	
	public REPSelector(AbstractSelector selector) {
		this.selector = selector;		
	}

	public static REPSelector create() throws IOException{
		if(REPServerSocketChannel.isSimulation){
			return new SelectorSimulator();
		}
		return new REPSelector(SelectorProvider.provider().openSelector());
	}

	@Override
	public void close() throws IOException {
		selector.close();
	}

	@Override
	public boolean isOpen() {
		return selector.isOpen();
	}

	@Override
	public Set<SelectionKey> keys() {
		return selector.keys();
	}

	@Override
	public SelectorProvider provider() {
		return selector.provider();
	}

	@Override
	public int select() throws IOException {
		return selector.select();
	}

	@Override
	public int select(long timeout) throws IOException {
		return selector.select(timeout);
	}

	@Override
	public int selectNow() throws IOException {
		return selector.selectNow();
	}

	@Override
	public Set<SelectionKey> selectedKeys() {
		/*
		Set<SelectionKey> keys = new HashSet<SelectionKey>();
		for (SelectionKey key: selector.selectedKeys()){
			keys.add(new SelectionKeySimulator(new REPSocketChannel<?>(), key.readyOps(), selector));
			new SelectionKey();
		}*/
		return selector.selectedKeys();
	}

	@Override
	public Selector wakeup() {
		return selector.wakeup();
	}

	public SelectionKey register(SelectableChannel ch, int ops, Object att) throws ClosedChannelException{
		return ch.register(selector, ops, att);
	}
	/*
	public SelectionKey register(REPSocketChannel<?> ch, int ops, Object att) throws ClosedChannelException{
		return ch.register(selector, ops, att);
	}
	public SelectionKey register(REPServerSocketChannel<?> ch, int ops, Object att) throws ClosedChannelException{
		return ch.register(selector, ops, att);
	}*/


}