SUMO - Simulation of Urban MObility
GUIRunThread Class Reference

#include <GUIRunThread.h>

Inheritance diagram for GUIRunThread:
Inheritance graph
Collaboration diagram for GUIRunThread:
Collaboration graph

Public Types

enum  { ID_THREAD_EVENT }
 

Public Member Functions

virtual void begin ()
 
virtual void deleteSim ()
 
FXMutex & getBreakpointLock ()
 
std::vector< SUMOTime > & getBreakpoints ()
 
GUINet & getNet () const
 
SUMOTime getSimEndTime () const
 
std::set< SUMOTime > & getSnapshots ()
 
FXMutex & getSnapshotsLock ()
 
 GUIRunThread (FXApp *app, MFXInterThreadEventClient *mw, FXRealSpinDial &simDelay, MFXEventQue< GUIEvent * > &eq, FXEX::FXThreadEvent &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 ()
 
virtual ~GUIRunThread ()
 destructor More...
 

Static Public Member Functions

static void sleep (long ms)
 

Protected Member Functions

void makeStep ()
 
void waitForSnapshots (SUMOTime snapShotTime)
 

Protected Attributes

std::set< SUMOTime > myApplicationSnapshots
 List of snapshot times. More...
 
FXMutex myApplicationSnapshotsLock
 Lock for modifying the list of snapshot times. More...
 
FXMutex myBreakpointLock
 Lock for modifying the list of breakpoints. More...
 
std::vector< SUMOTime > myBreakpoints
 List of breakpoints. More...
 
OutputDevice * myErrorRetriever
 The instances of message retriever encapsulations Needed to be deleted from the handler later on. More...
 
MFXEventQue< GUIEvent * > & myEventQue
 
FXEX::FXThreadEvent & myEventThrow
 
bool myHalting
 information whether the simulation is halting (is not being executed) More...
 
bool myHaveSignaledEnd
 whether the simulation already ended More...
 
OutputDevice * myMessageRetriever
 
GUINet * myNet
 the loaded simulation network More...
 
bool myOk
 
bool myQuit
 
FXRealSpinDial & mySimDelay
 
SUMOTime mySimEndTime
 
SUMOTime mySimStartTime
 the times the simulation starts and ends with More...
 
bool mySimulationInProgress
 
MFXMutex mySimulationLock
 
bool mySingle
 
OutputDevice * myWarningRetriever
 

Detailed Description

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 63 of file GUIRunThread.h.

Member Enumeration Documentation

anonymous enum
inherited
Enumerator
ID_THREAD_EVENT 

Definition at line 53 of file FXSingleEventThread.h.

Constructor & Destructor Documentation

GUIRunThread::GUIRunThread ( FXApp *  app,
MFXInterThreadEventClient *  mw,
FXRealSpinDial &  simDelay,
MFXEventQue< GUIEvent * > &  eq,
FXEX::FXThreadEvent &  ev 
)
GUIRunThread::~GUIRunThread ( )
virtual

Member Function Documentation

void GUIRunThread::begin ( )
virtual

starts the simulation (execution of one step after another)

Definition at line 270 of file GUIRunThread.cpp.

References myOk, mySimStartTime, time2string(), and WRITE_MESSAGE.

Referenced by GUIApplicationWindow::onCmdStart(), and GUIApplicationWindow::onCmdStep().

FXMutex& GUIRunThread::getBreakpointLock ( )
inline
std::vector<SUMOTime>& GUIRunThread::getBreakpoints ( )
inline
SUMOTime GUIRunThread::getSimEndTime ( ) const
inline

Definition at line 111 of file GUIRunThread.h.

References mySimEndTime.

Referenced by GUIApplicationWindow::updateTimeLCD().

std::set<SUMOTime>& GUIRunThread::getSnapshots ( )
inline

Definition at line 123 of file GUIRunThread.h.

References myApplicationSnapshots.

Referenced by GUIApplicationWindow::openNewView().

FXMutex& GUIRunThread::getSnapshotsLock ( )
inline
long FXSingleEventThread::onThreadEvent ( FXObject *  ,
FXSelector  ,
void *   
)
inherited

Definition at line 129 of file FXSingleEventThread.cpp.

long FXSingleEventThread::onThreadSignal ( FXObject *  ,
FXSelector  ,
void *   
)
inherited

Definition at line 115 of file FXSingleEventThread.cpp.

References PIPE_READ, and FXEX::SEL_THREAD.

void GUIRunThread::prepareDestruction ( )

halts the thread before it shall be deleted

Definition at line 319 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 256 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 326 of file GUIRunThread.cpp.

References MFXEventQue< T >::add(), myEventQue, myEventThrow, and FXEX::FXThreadEvent::signal().

Referenced by GUIRunThread().

void FXSingleEventThread::signal ( )
inherited

Definition at line 93 of file FXSingleEventThread.cpp.

References PIPE_WRITE, and FXEX::SEL_THREAD.

void FXSingleEventThread::signal ( FXuint  seltype)
inherited

Definition at line 104 of file FXSingleEventThread.cpp.

References PIPE_WRITE, and UNUSED_PARAMETER.

bool GUIRunThread::simulationIsStartable ( ) const
virtual
bool GUIRunThread::simulationIsStepable ( ) const
virtual

Definition at line 346 of file GUIRunThread.cpp.

References myHalting, and myNet.

Referenced by GUIApplicationWindow::onUpdStep().

bool GUIRunThread::simulationIsStopable ( ) const
virtual

Definition at line 340 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 263 of file GUIRunThread.cpp.

References myHalting, and mySingle.

Referenced by GUIApplicationWindow::onCmdStep().

void FXSingleEventThread::sleep ( long  ms)
staticinherited
void GUIRunThread::stop ( )

halts the simulation execution

Definition at line 278 of file GUIRunThread.cpp.

References myHalting, and mySingle.

Referenced by GUIApplicationWindow::onCmdStop(), and run().

void GUIRunThread::waitForSnapshots ( SUMOTime  snapShotTime)
protected

Field Documentation

std::set<SUMOTime> GUIRunThread::myApplicationSnapshots
protected

List of snapshot times.

Definition at line 182 of file GUIRunThread.h.

Referenced by getSnapshots(), and waitForSnapshots().

FXMutex GUIRunThread::myApplicationSnapshotsLock
protected

Lock for modifying the list of snapshot times.

Definition at line 185 of file GUIRunThread.h.

Referenced by getSnapshotsLock(), and waitForSnapshots().

FXMutex GUIRunThread::myBreakpointLock
protected

Lock for modifying the list of breakpoints.

Definition at line 179 of file GUIRunThread.h.

Referenced by getBreakpointLock(), and run().

std::vector<SUMOTime> GUIRunThread::myBreakpoints
protected

List of breakpoints.

Definition at line 176 of file GUIRunThread.h.

Referenced by getBreakpoints(), and run().

OutputDevice* GUIRunThread::myErrorRetriever
protected

The instances of message retriever encapsulations Needed to be deleted from the handler later on.

Definition at line 165 of file GUIRunThread.h.

Referenced by deleteSim(), GUIRunThread(), init(), and ~GUIRunThread().

MFXEventQue<GUIEvent*>& GUIRunThread::myEventQue
protected

Definition at line 169 of file GUIRunThread.h.

Referenced by makeStep(), and retrieveMessage().

FXEX::FXThreadEvent& GUIRunThread::myEventThrow
protected

Definition at line 171 of file GUIRunThread.h.

Referenced by makeStep(), and retrieveMessage().

bool GUIRunThread::myHalting
protected

information whether the simulation is halting (is not being executed)

Definition at line 144 of file GUIRunThread.h.

Referenced by deleteSim(), init(), makeStep(), prepareDestruction(), resume(), run(), simulationIsStartable(), simulationIsStepable(), simulationIsStopable(), singleStep(), stop(), and waitForSnapshots().

bool GUIRunThread::myHaveSignaledEnd
protected

whether the simulation already ended

Definition at line 161 of file GUIRunThread.h.

Referenced by makeStep().

OutputDevice * GUIRunThread::myMessageRetriever
protected

Definition at line 165 of file GUIRunThread.h.

Referenced by deleteSim(), GUIRunThread(), init(), and ~GUIRunThread().

GUINet* GUIRunThread::myNet
protected
bool GUIRunThread::myOk
protected

Definition at line 155 of file GUIRunThread.h.

Referenced by begin(), init(), makeStep(), and run().

bool GUIRunThread::myQuit
protected

information whether the thread shall be stopped (if not, the thread stays in an endless loop)

Definition at line 148 of file GUIRunThread.h.

Referenced by prepareDestruction(), run(), and ~GUIRunThread().

FXRealSpinDial& GUIRunThread::mySimDelay
protected

Definition at line 167 of file GUIRunThread.h.

Referenced by run().

SUMOTime GUIRunThread::mySimEndTime
protected

Definition at line 141 of file GUIRunThread.h.

Referenced by getSimEndTime(), init(), and makeStep().

SUMOTime GUIRunThread::mySimStartTime
protected

the times the simulation starts and ends with

Definition at line 141 of file GUIRunThread.h.

Referenced by begin(), deleteSim(), and init().

bool GUIRunThread::mySimulationInProgress
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 153 of file GUIRunThread.h.

Referenced by deleteSim(), init(), makeStep(), and ~GUIRunThread().

MFXMutex GUIRunThread::mySimulationLock
protected

Definition at line 173 of file GUIRunThread.h.

Referenced by deleteSim(), init(), and makeStep().

bool GUIRunThread::mySingle
protected

information whether the thread is running in single step mode

Definition at line 158 of file GUIRunThread.h.

Referenced by makeStep(), resume(), singleStep(), and stop().

OutputDevice * GUIRunThread::myWarningRetriever
protected

Definition at line 165 of file GUIRunThread.h.

Referenced by deleteSim(), GUIRunThread(), init(), and ~GUIRunThread().


The documentation for this class was generated from the following files: