/*
* Nathaniel Lim 11/3
*
*/
package Ethernet;
import java.util.PriorityQueue;
import java.util.ArrayList;
import java.util.Iterator;
public class SimulatedTime {
private double currentTime = 0;
private PriorityQueue<SimulatedEvent> timeline;
private ArrayList<Host> hostlist;
public SimulatedEvent CurrentEvent;
public SimulatedTime () {
timeline = new PriorityQueue<SimulatedEvent>();
hostlist = new ArrayList<Host>();
}
public double getCurrentTime() {
return currentTime;
}
public void addHost(Host someHost)
{
hostlist.add(someHost);
}
public boolean elapse(){
CurrentEvent = timeline.poll();
if (CurrentEvent == null){
return false;
} else {
currentTime = CurrentEvent.TimeStart;
if(!CurrentEvent.justMyself)
{
for (Host h : hostlist){
h.reactToEvent(CurrentEvent);
}
}
else
{
hostlist.get(CurrentEvent.hostCreated).reactToEvent(CurrentEvent);
}
return true;
}
}
public int GetTimelineSize()
{
return timeline.size();
}
public String ExtractTimelineEvents()
{
String retStr = "";
Iterator<SimulatedEvent> allEvtsLeft = timeline.iterator();
while(allEvtsLeft.hasNext())
{
retStr += allEvtsLeft.next() + System.getProperty("line.separator");
}
return retStr;
}
public boolean schedule(SimulatedEvent e){
return timeline.add(e);
}
public boolean deschedule(SimulatedEvent e){
return timeline.remove(e);
}
}