#include <sp_executor.h>
Inheritance diagram for faudes::Executor:
The Executor is the lowest level building block for the libFAUDES simulator plugin. It maintains a current state that consists of the discrete state and a value map that assigns values to clock variables. It can be retrieved by the method Executor::CurrentState(void), and it is updated whenever time or transitions are executed via Executor::ExecuteTime(tpTime::Type) or Executor::ExecuteEvent(Idx). If you plan to execute multiple generators with synchronized shared events, you will find the class ParallelExecutor with a very similar interface more appropriate.
The Executor provides Methods that indicate which transitions currently are enabled, referring to the current state, the current clock values and the guard and invariant data from the tGenerator. In contrast to enabled events, there is also the notion of active events, which refers to the discrete state only, ignoring guards and invariants.
Technically, the Executor class is derived from the tGenerator, however inheritence is private. The common way to initialise an Executor object is to construct it from a const ref to a tGenerator, which sets up additional internal data structures. Read-only access to the underlying generator is given by the faudes::Executor::Generator() method.
Note: a prequisit of the current implementation is that the underlying generator is deterministic ie the current discrete state is uniquely determind by the external sequence of discrete events.
Definition at line 86 of file sp_executor.h.
Public Member Functions | |
Executor (void) | |
Creates an emtpy Executer. | |
Executor (const tGenerator &rGen) | |
Construct from tgenerator. | |
Executor (const std::string &rFileName) | |
Construct from tGenerator file. | |
void | Read (const std::string &rFileName) |
Read tGenerator file. | |
void | Read (TokenReader &rTr) |
Read form tokenreader. | |
void | Write (TokenWriter &rTw) const |
Write to tokenwriter. | |
void | Write (const std::string &rFileName, std::ios::openmode openmode=std::ios::out|std::ios::trunc) |
Write to file. | |
void | Generator (const tGenerator &rGen) |
Initialise from tGenerator. | |
const tGenerator & | Generator (void) const |
Reference to the internal generator for inspection. | |
std::string | Name (void) const |
Generator name (for convenience). | |
std::string | StateName (Idx idx) const |
State name (for convenience). | |
std::string | EventName (Idx idx) const |
Event name (for convenience). | |
void | Clear (void) |
Clear all data incl tGenerator. | |
void | Reset () |
Reset all clocks and assign initial state. | |
const TimeInterval & | EnabledTime () const |
Get maximal interval of time that can pass without executing an event. | |
const EventSet & | EnabledEvents () const |
Get set of events that are enabled at current (timed) state. | |
const EventSet & | DisabledEvents () const |
Get set of events that are disabled at current (timed) state. | |
const TimeInterval & | EnabledInterval () const |
Get maximal interval on which set of enabled events is constant. | |
TimeInterval | EnabledEventTime (Idx event) const |
Get interval on which an active event is enabled. | |
TimeInterval | EnabledGuardTime (Idx event) const |
Get interval on which an active event satisfies its guard. | |
const EventSet & | ActiveEventSet (void) const |
Get set of events that are active at current (untimed) state. | |
const TransSet & | ActiveTransSet (void) const |
Get set of transitions that are active at current (untimed) state. | |
bool | ExecuteTime (tpTime::Type time) |
Let time pass. | |
bool | ExecuteEvent (Idx event) |
Execute transition. | |
bool | CurrentTimedState (const TimedState &tstate) |
Set timed state. | |
const TimedState & | CurrentTimedState (void) const |
Get timed state. | |
bool | CurrentState (Idx index) |
Set discrete state. | |
Idx | CurrentState (void) const |
Get discrete state. | |
bool | CurrentClockValue (Idx clock, tpTime::Type time) |
Set value of clock variable. | |
tpTime::Type | CurrentClockValue (Idx clock) const |
Get value of clock. | |
void | CurrentTime (tpTime::Type time) |
Set current time. | |
tpTime::Type | CurrentTime (void) const |
Get current time. | |
void | CurrentStep (int step) |
Set logic time (# of steps). | |
int | CurrentStep (void) const |
Get logic time ie numer of transitions so far. | |
bool | IsDeadlocked () const |
Returns true if timed generator is in a deadlocked state. | |
virtual bool | Valid (void) const |
Check if Executor is valid. | |
std::string | CurrentTimedStateStr (void) const |
Pretty printable string of current state. | |
std::string | TSStr (const TimedState &tstate) const |
Pretty printable string of timed state. | |
std::string | TEStr (const TimedEvent &tevent) const |
Pretty printable string of timed event. | |
std::string | CStr (Idx idx) const |
Pretty printable string of clock name. | |
std::string | EStr (Idx idx) const |
Pretty printable string of event. | |
std::string | SStr (Idx idx) const |
Pretty printable string of state. | |
Private Member Functions | |
void | Compile (void) |
Prepare internal data structurs from generator. | |
void | ComputeEnabled (void) const |
Compute enabled events and enabled interval (fake const). | |
void | ComputeEnabledNonConst (void) |
Compute enabled core routine (non const). | |
Private Attributes | |
TimedState | mCurrentTimedState |
Current state incl clock values. | |
tpTime::Type | mCurrentTime |
Current physical time. | |
int | mCurrentStep |
Current logic time. | |
TimeInterval | mETime |
Record enabled time. | |
EventSet | mEEvents |
Record enabled events. | |
TimeInterval | mEInterval |
Record rime on shich mEEvents is constant. | |
std::map< Idx, TimeInterval > | mEGuardInterval |
Record interval in which each guard is enabled. | |
EventSet | mDEvents |
Record disabled events. | |
EventSet | mAEvents |
Record active events (ie regardles time). | |
TransSet | mATrans |
Record active transitions (regardles time). | |
bool | mEValid |
Validity flag for the above data. | |
std::map< Transition, std::map< Idx, TimeInterval > > | mTransClockIntervalMap |
Compiled generator data: map transition to clock to interval constraint. | |
std::map< Idx, std::map< Idx, TimeInterval > > | mStateClockIntervalMap |
Compiled generator data: map state to clock to interval constraint. | |
Classes | |
struct | TimedState |
Typedef for timed state. More... |
|
Creates an emtpy Executer.
Definition at line 19 of file sp_executor.cpp. |
|
Construct from tgenerator. Construction from a tGenerator will copy all given tGenerator data and complie it to some additional Executor specific data. Thus, if the original tGenerator changes the Executor will not reflect these changes.
Definition at line 26 of file sp_executor.cpp. |
|
Construct from tGenerator file.
Definition at line 32 of file sp_executor.cpp. |
|
Get set of events that are active at current (untimed) state.
Definition at line 263 of file sp_executor.cpp. |
|
Get set of transitions that are active at current (untimed) state.
Definition at line 269 of file sp_executor.cpp. |
|
Clear all data incl tGenerator.
Reimplemented from faudes::TaGenerator< GlobalAttr, StateAttr, EventAttr, TransAttr >. Definition at line 105 of file sp_executor.cpp. |
|
Prepare internal data structurs from generator.
Definition at line 67 of file sp_executor.cpp. |
|
Compute enabled events and enabled interval (fake const).
Definition at line 129 of file sp_executor.cpp. |
|
Compute enabled core routine (non const).
Definition at line 135 of file sp_executor.cpp. |
|
Pretty printable string of clock name.
Reimplemented from faudes::TtGenerator< GlobalAttr, StateAttr, EventAttr, TransAttr >. Definition at line 486 of file sp_executor.cpp. |
|
Get value of clock.
Definition at line 412 of file sp_executor.cpp. |
|
Set value of clock variable. Returns false if clock not in clockset.
Definition at line 404 of file sp_executor.cpp. |
|
Get discrete state.
Definition at line 399 of file sp_executor.cpp. |
|
Set discrete state. Returns false if state is not in state set.
Definition at line 391 of file sp_executor.cpp. |
|
Get logic time ie numer of transitions so far.
Definition at line 437 of file sp_executor.cpp. |
|
Set logic time (# of steps).
Definition at line 431 of file sp_executor.cpp. |
|
Get current time.
Definition at line 426 of file sp_executor.cpp. |
|
Set current time.
Definition at line 420 of file sp_executor.cpp. |
|
Get timed state.
Definition at line 386 of file sp_executor.cpp. |
|
Set timed state. Returns false if state or clock values are invalid.
Definition at line 372 of file sp_executor.cpp. |
|
Pretty printable string of current state.
Definition at line 469 of file sp_executor.cpp. |
|
Get set of events that are disabled at current (timed) state.
Definition at line 251 of file sp_executor.cpp. |
|
Get set of events that are enabled at current (timed) state.
Definition at line 245 of file sp_executor.cpp. |
|
Get interval on which an active event is enabled.
Definition at line 275 of file sp_executor.cpp. |
|
Get interval on which an active event satisfies its guard.
Definition at line 294 of file sp_executor.cpp. |
|
Get maximal interval on which set of enabled events is constant.
Definition at line 257 of file sp_executor.cpp. |
|
Get maximal interval of time that can pass without executing an event. This corresponds to the inveriant of the current timed state.
Definition at line 239 of file sp_executor.cpp. |
|
Pretty printable string of event.
Reimplemented from faudes::vGenerator. Definition at line 481 of file sp_executor.cpp. |
|
Event name (for convenience).
Reimplemented from faudes::vGenerator. Definition at line 215 of file sp_executor.h. |
|
Execute transition. Returns false if the transition is not enabled and hence cannot be executed at the current time
Definition at line 344 of file sp_executor.cpp. |
|
Let time pass. Returns false if the specified amount of time cannot elapse without an event being executed
Definition at line 307 of file sp_executor.cpp. |
|
Reference to the internal generator for inspection.
Definition at line 54 of file sp_executor.cpp. |
|
Initialise from tGenerator.
Definition at line 59 of file sp_executor.cpp. |
|
Returns true if timed generator is in a deadlocked state.
Definition at line 442 of file sp_executor.cpp. |
|
Generator name (for convenience).
Reimplemented from faudes::vGenerator. Definition at line 202 of file sp_executor.h. |
|
Read form tokenreader.
Definition at line 46 of file sp_executor.cpp. |
|
Read tGenerator file.
Definition at line 38 of file sp_executor.cpp. |
|
Reset all clocks and assign initial state.
Definition at line 116 of file sp_executor.cpp. |
|
Pretty printable string of state.
Reimplemented from faudes::vGenerator. Definition at line 491 of file sp_executor.cpp. |
|
State name (for convenience).
Reimplemented from faudes::vGenerator. Definition at line 208 of file sp_executor.h. |
|
Pretty printable string of timed event.
Definition at line 474 of file sp_executor.cpp. |
|
Pretty printable string of timed state.
Definition at line 450 of file sp_executor.cpp. |
|
Check if Executor is valid. Not implemented, should check for determinism and consitency of current state and clock values.
Definition at line 436 of file sp_executor.h. |
|
Write to file.
Definition at line 178 of file sp_executor.h. |
|
Write to tokenwriter.
Definition at line 165 of file sp_executor.h. |
|
Record active events (ie regardles time).
Definition at line 506 of file sp_executor.h. |
|
Record active transitions (regardles time).
Definition at line 509 of file sp_executor.h. |
|
Current logic time.
Definition at line 479 of file sp_executor.h. |
|
Current physical time.
Definition at line 476 of file sp_executor.h. |
|
Current state incl clock values.
Definition at line 473 of file sp_executor.h. |
|
Record disabled events.
Definition at line 503 of file sp_executor.h. |
|
Record enabled events.
Definition at line 494 of file sp_executor.h. |
|
Record interval in which each guard is enabled.
Definition at line 500 of file sp_executor.h. |
|
Record rime on shich mEEvents is constant.
Definition at line 497 of file sp_executor.h. |
|
Record enabled time.
Definition at line 491 of file sp_executor.h. |
|
Validity flag for the above data.
Definition at line 512 of file sp_executor.h. |
|
Compiled generator data: map state to clock to interval constraint.
Definition at line 518 of file sp_executor.h. |
|
Compiled generator data: map transition to clock to interval constraint.
Definition at line 515 of file sp_executor.h. |