RtSolverModel(RealtimeClockController c, PDPRoadModel rm, PDPModel pm,
Mode m, int threads, boolean threadGrouping) {
clock = c;
roadModel = rm;
pdpModel = pm;
manager = new SimSolversManager();
executor = Optional.absent();
mode = m;
threadGroupingEnabled = threadGrouping;
threadPoolSize = threads;
receivedEvents = Collections.synchronizedList(new ArrayList<Event>());
clock.getEventAPI().addListener(new Listener() {
@Override
public void handleEvent(Event event) {
manager.checkExceptions();
shutdown();
}
}, ClockEventType.STOPPED);
pdpModel.getEventAPI().addListener(new Listener() {
@Override
public void handleEvent(Event e) {
manager.checkExceptions();
LOGGER.debug("new parcel -> switch to real time");
clock.switchToRealTime();
}
}, PDPModelEventType.NEW_PARCEL);
initExecutor();
}