![]() |
Eclipse SUMO - Simulation of Urban MObility
|
#include <GUIRunThread.h>
Public Types | |
enum | { ID_THREAD_EVENT } |
FOX declaration. More... | |
Public Member Functions | |
virtual void | begin () |
virtual void | deleteSim () |
void | enableLibsumo () |
FXMutex & | getBreakpointLock () |
std::vector< SUMOTime > & | getBreakpoints () |
GUINet & | getNet () const |
SUMOTime | getSimEndTime () const |
GUIRunThread (FXApp *app, MFXInterThreadEventClient *mw, double &simDelay, MFXSynchQue< GUIEvent * > &eq, FXEX::MFXThreadEvent &ev) | |
constructor More... | |
virtual bool | init (GUINet *net, SUMOTime start, SUMOTime end) |
initialises the thread with the new simulation More... | |
long | onThreadEvent (FXObject *, FXSelector, void *) |
long | onThreadSignal (FXObject *, FXSelector, void *) |
void | prepareDestruction () |
void | resume () |
void | retrieveMessage (const MsgHandler::MsgType type, const std::string &msg) |
Retrieves messages from the loading module. More... | |
virtual FXint | run () |
starts the execution More... | |
void | signal () |
void | signal (FXuint seltype) |
bool | simulationAvailable () const |
virtual bool | simulationIsStartable () const |
virtual bool | simulationIsStepable () const |
virtual bool | simulationIsStopable () const |
void | singleStep () |
void | stop () |
void | tryStep () |
virtual | ~GUIRunThread () |
destructor More... | |
Static Public Member Functions | |
static void | sleep (long ms) |
Protected Member Functions | |
void | makeStep () |
void | waitForSnapshots (const SUMOTime snapshotTime) |
Protected Attributes | |
bool | myAmLibsumo |
whether we are running in libsumo More... | |
FXApp * | myApp = nullptr |
pointer to APP More... | |
FXMutex | myBreakpointLock |
Lock for modifying the list of breakpoints. More... | |
std::vector< SUMOTime > | myBreakpoints |
List of breakpoints. More... | |
MFXInterThreadEventClient * | myClient = nullptr |
thread client More... | |
OutputDevice * | myErrorRetriever |
The instances of message retriever encapsulations Needed to be deleted from the handler later on. More... | |
MFXSynchQue< GUIEvent * > & | myEventQue |
FXEX::MFXThreadEvent & | myEventThrow |
bool | myHalting |
information whether the simulation is halting (is not being executed) More... | |
bool | myHaveSignaledEnd |
whether the simulation already ended More... | |
long | myLastBreakMillis |
last time the simulation took a microsecond break for the fox event loop to catch up (#9028) More... | |
long | myLastEndMillis |
end of the last simulation step More... | |
OutputDevice * | myMessageRetriever |
GUINet * | myNet |
the loaded simulation network More... | |
bool | myOk |
bool | myQuit |
double & | mySimDelay |
SUMOTime | mySimEndTime |
SUMOTime | mySimStartTime |
the times the simulation starts and ends with More... | |
bool | mySimulationInProgress |
FXMutex | mySimulationLock |
bool | mySingle |
OutputDevice * | myWarningRetriever |
Private Attributes | |
FXEX::MFXThreadEventHandle | event |
event More... | |
This thread executes the given simulation stepwise to allow parallel visualisation. The avoidance of collisions between the simulation execution and its visualisation is done individually for every lane using mutexes
Definition at line 54 of file GUIRunThread.h.
|
inherited |
GUIRunThread::GUIRunThread | ( | FXApp * | app, |
MFXInterThreadEventClient * | mw, | ||
double & | simDelay, | ||
MFXSynchQue< GUIEvent * > & | eq, | ||
FXEX::MFXThreadEvent & | ev | ||
) |
constructor
Definition at line 51 of file GUIRunThread.cpp.
References MsgHandler::MT_ERROR, MsgHandler::MT_MESSAGE, MsgHandler::MT_WARNING, myErrorRetriever, myMessageRetriever, myWarningRetriever, and retrieveMessage().
|
virtual |
destructor
Definition at line 64 of file GUIRunThread.cpp.
References deleteSim(), myErrorRetriever, myMessageRetriever, myNet, myQuit, mySimulationInProgress, and myWarningRetriever.
|
virtual |
starts the simulation (execution of one step after another)
Definition at line 263 of file GUIRunThread.cpp.
References myOk, mySimStartTime, time2string(), TL, and WRITE_MESSAGEF.
Referenced by GUIApplicationWindow::onCmdStart(), and GUIApplicationWindow::onCmdStep().
|
virtual |
deletes the existing simulation
Definition at line 284 of file GUIRunThread.cpp.
References MsgHandler::cleanupOnEnd(), GUIGlObjectStorage::clear(), OutputDevice::closeAll(), MSNet::closeSimulation(), MsgHandler::getErrorInstance(), MsgHandler::getMessageInstance(), MSNet::getStateMessage(), MsgHandler::getWarningInstance(), GUIGlObjectStorage::gIDStorage, myErrorRetriever, myHalting, myMessageRetriever, myNet, mySimEndTime, mySimStartTime, mySimulationInProgress, mySimulationLock, myWarningRetriever, MsgHandler::removeRetriever(), MSNet::simulationState(), and MFXSingleEventThread::sleep().
Referenced by GUIApplicationWindow::closeAllWindows(), run(), and ~GUIRunThread().
|
inline |
Definition at line 115 of file GUIRunThread.h.
References myAmLibsumo.
|
inline |
Definition at line 111 of file GUIRunThread.h.
References myBreakpointLock.
Referenced by GUIApplicationWindow::handleEvent_SimulationLoaded(), GUIApplicationWindow::onCmdEditBreakpoints(), GUIApplicationWindow::retrieveBreakpoints(), and GUIApplicationWindow::setBreakpoints().
|
inline |
Definition at line 107 of file GUIRunThread.h.
References myBreakpoints.
Referenced by GUIApplicationWindow::handleEvent_SimulationLoaded(), GUIApplicationWindow::onCmdEditBreakpoints(), GUIApplicationWindow::retrieveBreakpoints(), and GUIApplicationWindow::setBreakpoints().
GUINet & GUIRunThread::getNet | ( | ) | const |
returns the loaded network
Definition at line 308 of file GUIRunThread.cpp.
References myNet.
Referenced by GUIApplicationWindow::checkGamingEventsDRT(), GUIApplicationWindow::getCurrentSimTime(), GUIApplicationWindow::handleEvent_SimulationLoaded(), GUIApplicationWindow::handleEvent_SimulationStep(), GUIApplicationWindow::onCmdDemandScale(), GUIApplicationWindow::onCmdOpenShapes(), GUIApplicationWindow::onCmdTimeToggle(), GUIApplicationWindow::openNewView(), and tryStep().
|
inline |
Definition at line 103 of file GUIRunThread.h.
References mySimEndTime.
Referenced by GUIApplicationWindow::updateTimeLCD().
initialises the thread with the new simulation
Definition at line 77 of file GUIRunThread.cpp.
References MsgHandler::addRetriever(), MsgHandler::getErrorInstance(), MsgHandler::getMessageInstance(), OptionsCont::getOptions(), MsgHandler::getWarningInstance(), MsgHandler::inform(), MSNet::loadRoutes(), myErrorRetriever, myHalting, myHaveSignaledEnd, myMessageRetriever, myNet, myOk, mySimEndTime, mySimStartTime, mySimulationInProgress, mySimulationLock, myWarningRetriever, MSNet::setCurrentTimeStep(), TL, and WRITE_ERROR.
Referenced by GUIApplicationWindow::handleEvent_SimulationLoaded().
|
protected |
Definition at line 179 of file GUIRunThread.cpp.
References MSNet::adaptToState(), DELTA_T, MSNet::getCurrentTimeStep(), MsgHandler::getErrorInstance(), GUINet::guiSimulationStep(), MsgHandler::inform(), myAmLibsumo, myEventQue, myEventThrow, myHalting, myHaveSignaledEnd, myNet, myOk, mySimEndTime, mySimulationInProgress, mySimulationLock, MFXSynchQue< T, Container >::push_back(), FXEX::MFXThreadEvent::signal(), MSNet::SIMSTATE_CONNECTION_CLOSED, MSNet::SIMSTATE_END_STEP_REACHED, MSNet::SIMSTATE_ERROR_IN_SIM, MSNet::SIMSTATE_LOADING, MSNet::SIMSTATE_NO_FURTHER_VEHICLES, MSNet::SIMSTATE_TOO_MANY_TELEPORTS, MSNet::simulationState(), GUINet::simulationStep(), and WRITE_ERROR.
Referenced by tryStep().
|
inherited |
Definition at line 128 of file MFXSingleEventThread.cpp.
References MFXInterThreadEventClient::eventOccurred(), and MFXSingleEventThread::myClient.
Referenced by FXDEFMAP().
|
inherited |
Definition at line 113 of file MFXSingleEventThread.cpp.
References MFXSingleEventThread::event, PIPE_READ, FXEX::SEL_THREAD, and UNUSED_PARAMETER.
Referenced by FXDEFMAP().
void GUIRunThread::prepareDestruction | ( | ) |
halts the thread before it shall be deleted
Definition at line 314 of file GUIRunThread.cpp.
References myHalting, and myQuit.
Referenced by GUIApplicationWindow::~GUIApplicationWindow().
void GUIRunThread::resume | ( | ) |
called when the user presses the "resume"-button, this method resumes the execution after a break
Definition at line 249 of file GUIRunThread.cpp.
References myHalting, and mySingle.
Referenced by GUIApplicationWindow::onCmdStart().
void GUIRunThread::retrieveMessage | ( | const MsgHandler::MsgType | type, |
const std::string & | msg | ||
) |
Retrieves messages from the loading module.
Definition at line 321 of file GUIRunThread.cpp.
References myEventQue, myEventThrow, MFXSynchQue< T, Container >::push_back(), and FXEX::MFXThreadEvent::signal().
Referenced by GUIRunThread().
|
virtual |
starts the execution
Reimplemented from MFXSingleEventThread.
Definition at line 118 of file GUIRunThread.cpp.
References deleteSim(), myAmLibsumo, MFXSingleEventThread::myApp, myQuit, and tryStep().
|
inherited |
Definition at line 89 of file MFXSingleEventThread.cpp.
References MFXSingleEventThread::event, PIPE_WRITE, FXEX::SEL_THREAD, and UNUSED_PARAMETER.
|
inherited |
Definition at line 101 of file MFXSingleEventThread.cpp.
References MFXSingleEventThread::event, PIPE_WRITE, and UNUSED_PARAMETER.
bool GUIRunThread::simulationAvailable | ( | ) | const |
returns the information whether a simulation has been loaded
Definition at line 278 of file GUIRunThread.cpp.
References myNet.
Referenced by GUIApplicationWindow::eventOccurred(), GUIApplicationWindow::onCmdDemandScale(), GUIApplicationWindow::onCmdEditChosen(), GUIApplicationWindow::onCmdStart(), GUIApplicationWindow::onCmdStep(), GUIApplicationWindow::onCmdTimeToggle(), GUIApplicationWindow::onUpdAddView(), GUIApplicationWindow::onUpdNeedsSimulation(), and GUIApplicationWindow::openNewView().
|
virtual |
Definition at line 329 of file GUIRunThread.cpp.
References myHalting, and myNet.
Referenced by GUIApplicationWindow::handleEvent_SimulationLoaded(), GUIApplicationWindow::handleEvent_SimulationStep(), and GUIApplicationWindow::onUpdStart().
|
virtual |
Definition at line 341 of file GUIRunThread.cpp.
References myHalting, and myNet.
Referenced by GUIApplicationWindow::onUpdStep().
|
virtual |
Definition at line 335 of file GUIRunThread.cpp.
References myHalting, and myNet.
Referenced by GUIApplicationWindow::onUpdStop().
void GUIRunThread::singleStep | ( | ) |
called when the user presses the "single step"-button, this method allows the thread to perform a single simulation step
Definition at line 256 of file GUIRunThread.cpp.
References myHalting, and mySingle.
Referenced by GUIApplicationWindow::onCmdStep().
|
staticinherited |
Definition at line 142 of file MFXSingleEventThread.cpp.
Referenced by deleteSim(), GUIApplicationWindow::loadOnStartup(), GUISUMOAbstractView::makeSnapshot(), and tryStep().
void GUIRunThread::stop | ( | ) |
halts the simulation execution
Definition at line 271 of file GUIRunThread.cpp.
References myHalting, and mySingle.
Referenced by GUIApplicationWindow::onCmdStop(), and tryStep().
void GUIRunThread::tryStep | ( | ) |
Definition at line 135 of file GUIRunThread.cpp.
References DELTA_T, SysUtils::getCurrentMillis(), MSNet::getCurrentTimeStep(), getNet(), makeStep(), myBreakpointLock, myBreakpoints, myHalting, myLastBreakMillis, myLastEndMillis, myNet, myOk, mySimDelay, mySingle, GUINet::setIdleDuration(), GUINet::setSimDuration(), MFXSingleEventThread::sleep(), stop(), TS, and waitForSnapshots().
Referenced by run().
|
protected |
Definition at line 347 of file GUIRunThread.cpp.
References GUIMainWindow::getInstance(), and GUIMainWindow::getViews().
Referenced by tryStep().
|
privateinherited |
event
Definition at line 73 of file MFXSingleEventThread.h.
Referenced by MFXSingleEventThread::onThreadSignal(), MFXSingleEventThread::signal(), and MFXSingleEventThread::~MFXSingleEventThread().
|
protected |
whether we are running in libsumo
Definition at line 178 of file GUIRunThread.h.
Referenced by enableLibsumo(), makeStep(), and run().
|
protectedinherited |
pointer to APP
Definition at line 66 of file MFXSingleEventThread.h.
Referenced by run(), and MFXSingleEventThread::~MFXSingleEventThread().
|
protected |
Lock for modifying the list of breakpoints.
Definition at line 169 of file GUIRunThread.h.
Referenced by getBreakpointLock(), and tryStep().
|
protected |
List of breakpoints.
Definition at line 166 of file GUIRunThread.h.
Referenced by getBreakpoints(), and tryStep().
|
protectedinherited |
thread client
Definition at line 69 of file MFXSingleEventThread.h.
Referenced by MFXSingleEventThread::onThreadEvent().
|
protected |
The instances of message retriever encapsulations Needed to be deleted from the handler later on.
Definition at line 155 of file GUIRunThread.h.
Referenced by deleteSim(), GUIRunThread(), init(), and ~GUIRunThread().
|
protected |
Definition at line 159 of file GUIRunThread.h.
Referenced by makeStep(), and retrieveMessage().
|
protected |
Definition at line 161 of file GUIRunThread.h.
Referenced by makeStep(), and retrieveMessage().
|
protected |
information whether the simulation is halting (is not being executed)
Definition at line 134 of file GUIRunThread.h.
Referenced by deleteSim(), init(), makeStep(), prepareDestruction(), resume(), simulationIsStartable(), simulationIsStepable(), simulationIsStopable(), singleStep(), stop(), and tryStep().
|
protected |
whether the simulation already ended
Definition at line 151 of file GUIRunThread.h.
Referenced by init(), and makeStep().
|
protected |
last time the simulation took a microsecond break for the fox event loop to catch up (#9028)
Definition at line 175 of file GUIRunThread.h.
Referenced by tryStep().
|
protected |
end of the last simulation step
Definition at line 172 of file GUIRunThread.h.
Referenced by tryStep().
|
protected |
Definition at line 155 of file GUIRunThread.h.
Referenced by deleteSim(), GUIRunThread(), init(), and ~GUIRunThread().
|
protected |
the loaded simulation network
Definition at line 128 of file GUIRunThread.h.
Referenced by deleteSim(), getNet(), init(), makeStep(), simulationAvailable(), simulationIsStartable(), simulationIsStepable(), simulationIsStopable(), tryStep(), and ~GUIRunThread().
|
protected |
Definition at line 145 of file GUIRunThread.h.
Referenced by begin(), init(), makeStep(), and tryStep().
|
protected |
information whether the thread shall be stopped (if not, the thread stays in an endless loop)
Definition at line 138 of file GUIRunThread.h.
Referenced by prepareDestruction(), run(), and ~GUIRunThread().
|
protected |
Definition at line 157 of file GUIRunThread.h.
Referenced by tryStep().
|
protected |
Definition at line 131 of file GUIRunThread.h.
Referenced by deleteSim(), getSimEndTime(), init(), and makeStep().
|
protected |
the times the simulation starts and ends with
Definition at line 131 of file GUIRunThread.h.
Referenced by begin(), deleteSim(), and init().
|
protected |
information whether a simulation step is being performed (otherwise the thread may be waiting or the simulation is maybe not performed at all)
Definition at line 143 of file GUIRunThread.h.
Referenced by deleteSim(), init(), makeStep(), and ~GUIRunThread().
|
protected |
Definition at line 163 of file GUIRunThread.h.
Referenced by deleteSim(), init(), and makeStep().
|
protected |
information whether the thread is running in single step mode
Definition at line 148 of file GUIRunThread.h.
Referenced by resume(), singleStep(), stop(), and tryStep().
|
protected |
Definition at line 155 of file GUIRunThread.h.
Referenced by deleteSim(), GUIRunThread(), init(), and ~GUIRunThread().