view src/pathfinder/mergetest/SelectorSimulator.java @ 154:6a3c982bd72a

*** empty log message ***
author pin
date Sun, 24 Aug 2008 13:43:50 +0900
parents 6326e5ea4595
children 0dfb6413a31e
line wrap: on
line source

package pathfinder.mergetest;

import java.util.ArrayList;
import java.util.Set;

public class SelectorSimulator<P> {
	
	private ArrayList<SelectionKeySimulator<P>> keyList;
	private NetworkSimulator<P> ns;
	private ArrayList<SelectionKeySimulator<P>> selectedKeys;
	
	public SelectorSimulator(NetworkSimulator<P> _ns) {
		// TODO Auto-generated constructor stub
		ns = _ns;
		keyList = new ArrayList<SelectionKeySimulator<P>>();
	}

	public int select(){
		selectedKeys = new ArrayList<SelectionKeySimulator<P>>();
		
		synchronized(ns){
			boolean empty = false;
			//while(empty){
				for(SelectionKeySimulator<P> key : keyList){
					ChannelSimulator<P> channel = key.channel();
					if(channel.readQisEmpty()){
						empty = true;
					}else{
						empty = false;
						selectedKeys.add(key);
						break;
					}
				}

				try {
					if(empty) ns.wait();
				} catch (InterruptedException e) {
					//e.printStackTrace();
				}
			//}
		}
		return selectedKeys.size();
	}
	
	public SelectionKeySimulator<P> register(ChannelSimulator<P> cs){
		SelectionKeySimulator<P> key = new SelectionKeySimulator<P>(cs);
		keyList.add(new SelectionKeySimulator<P>(cs));
		return key;
	}

	public ArrayList<SelectionKeySimulator<P>> selectedKeys() {
		
		return selectedKeys;
	}

}