Package simulation

Source Code of simulation.SimDriver$CmpEvent

package simulation;
import java.util.TreeSet;
import java.util.Comparator;
import events.SimEvent;

public class SimDriver {
  Simulation sim;
  TreeSet<SimEvent> eventQueue;
  double currentTime = 0;
 
  public int nevents() {return eventQueue.size();}
 
  public SimDriver(Simulation sim) {
    this.sim = sim;
    sim.setSimDriver(this);
    eventQueue = new TreeSet<SimEvent>(new CmpEvent());
  }
 
  public void run() {
    while (!eventQueue.isEmpty()) {
      SimEvent e = eventQueue.pollFirst();
      assert e.getTime() >= currentTime;
      currentTime = e.getTime();
      e.run();
    }
  }
 
  public double getCurrentTime() {return currentTime;}
 
  public void schedule(SimEvent e) {
    assert e.getTime() >= currentTime: "event time: " + e.getTime() + " currentTime: " + currentTime;
    eventQueue.add(e);
  }
 
  public void deschedule(SimEvent e) {
    eventQueue.remove(e);
  }
 
  class CmpEvent implements Comparator<SimEvent> {
    public int compare(SimEvent e0, SimEvent e1) {
      int cmpTime = Double.compare(e0.getTime(), e1.getTime());
      if (0 == cmpTime)
        return Long.valueOf(e0.getUniqueID()).compareTo(Long.valueOf(e1.getUniqueID()));
      else
        return cmpTime;
    }
  }
 
}
TOP

Related Classes of simulation.SimDriver$CmpEvent

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.