public GlobalStateObject getState() { checkState(hasScheduleAndState()); return state.get(); }
final SolverEvent event = (SolverEvent) e; checkState(cfbQueue.peek().equals(cfb)); checkArgument(event.hasScheduleAndState(), "Solver was terminated before it found a solution."); if (!event.getState().equals(state)) { return;
@Override public void doneForNow() { try { checkState(solveCount.decrementAndGet() >= 0); if (solveCount.get() == 0) { LOGGER.trace("doneForNow"); eventDispatcher.safeDispatchEvent( new Event(EventType.DONE_COMPUTING, reference)); simSolverEventDispatcher.safeDispatchEvent( new SolverEvent(RtSimSolver.EventType.DONE, currentSchedule, currentState)); } } catch (final RuntimeException e) { reportException(e); } }
@Override public void solve(GlobalStateObject state) { currentState = state; currentSchedule = delegate.solve(state); isUpdated = true; eventDispatcher.dispatchEvent(new SolverEvent( RtSimSolver.EventType.NEW_SCHEDULE, Optional.of(currentSchedule), Optional.of(currentState))); eventDispatcher.dispatchEvent(new SolverEvent( RtSimSolver.EventType.DONE, Optional.of(currentSchedule), Optional.of(currentState))); }
@Override public void updateSchedule(GlobalStateObject state, ImmutableList<ImmutableList<Parcel>> routes) { currentSchedule = Optional.of(routes); currentState = Optional.of(state); isUpdated = true; LOGGER.trace("new schedule"); try { simSolverEventDispatcher.dispatchEvent(new SolverEvent( RtSimSolver.EventType.NEW_SCHEDULE, currentSchedule, currentState)); } catch (final RuntimeException e) { reportException(e); } }
public ImmutableList<ImmutableList<Parcel>> getSchedule() { checkState(hasScheduleAndState()); return schedule.get(); }