Mercurial > hg > RemoteEditor > Eclipse
diff src/pathfinder/mergetest/SelectorSimulator.java @ 151:1768e68ba98e
*** empty log message ***
author | pin |
---|---|
date | Tue, 05 Aug 2008 15:09:39 +0900 |
parents | |
children | 6326e5ea4595 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/pathfinder/mergetest/SelectorSimulator.java Tue Aug 05 15:09:39 2008 +0900 @@ -0,0 +1,56 @@ +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; + for(SelectionKeySimulator<P> key : keyList){ + ChannelSimulator<P> channel = key.channel(); + if(channel.readQisEmpty()){ + empty = true; + }else{ + empty = false; + //selectedKeys = key; + selectedKeys.add(key); + break; + } + } + + try { + if(empty) ns.wait(); + } catch (InterruptedException e) { + // TODO Auto-generated catch block + 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; + } + +}