int MSNet::simulate(SUMOTime start, SUMOTime stop) { // report the begin when wished WRITE_MESSAGE("Simulation started with time: " + time2string(start)); // the simulation loop MSNet::SimulationState state = SIMSTATE_RUNNING; myStep = start; // preload the routes especially for TraCI loadRoutes(); #ifndef NO_TRACI #ifdef HAVE_PYTHON if (OptionsCont::getOptions().isSet("python-script")) { traci::TraCIServer::runEmbedded(OptionsCont::getOptions().getString("python-script")); closeSimulation(start); WRITE_MESSAGE("Simulation ended at time: " + time2string(getCurrentTimeStep())); WRITE_MESSAGE("Reason: Script ended"); return 0; } #endif #endif while (state == SIMSTATE_RUNNING) { if (myLogStepNumber) { preSimStepOutput(); } simulationStep(); if (myLogStepNumber) { postSimStepOutput(); } state = simulationState(stop); #ifndef NO_TRACI if (state != SIMSTATE_RUNNING) { if (OptionsCont::getOptions().getInt("remote-port") != 0 && !traci::TraCIServer::wasClosed()) { state = SIMSTATE_RUNNING; } } #endif } // report the end when wished WRITE_MESSAGE("Simulation ended at time: " + time2string(getCurrentTimeStep())); WRITE_MESSAGE("Reason: " + getStateMessage(state)); // exit simulation loop closeSimulation(start); return 0; }
void GUISUMOAbstractView::checkSnapshots() { std::map<SUMOTime, std::string>::iterator snapIt = mySnapshots.find(getCurrentTimeStep()); if (snapIt != mySnapshots.end()) { std::string error = makeSnapshot(snapIt->second); if (error != "") { WRITE_WARNING(error); } } }
SUMOTime MSEventControl::addEvent(Command* operation, SUMOTime execTimeStep, AdaptType type) { SUMOTime currTimeStep = getCurrentTimeStep(); if (type == ADAPT_AFTER_EXECUTION && execTimeStep <= currTimeStep) { execTimeStep = currTimeStep; } Event newEvent = Event(operation, execTimeStep); myEvents.push(newEvent); return execTimeStep; }