faudes::LoggingExecutor Class Reference
|
Classes | |
struct | TraceSample |
Buffer data entry. More... | |
Public Member Functions | |
Constructors & Destructor | |
LoggingExecutor (void) | |
Construct an emtpy LoggingExecuter. | |
LoggingExecutor (const LoggingExecutor &rOther) | |
Copy constructor. | |
LoggingExecutor (const std::string &rFileName) | |
Construct from file. | |
virtual | ~LoggingExecutor (void) |
Explicit destructor. | |
Re-implemenented from ParallelExecutor | |
virtual void | Clear (void) |
Clear all data. | |
virtual void | Reset (void) |
Goto initial state. | |
virtual bool | Valid (void) const |
Check validity of executors. | |
virtual bool | ExecuteTime (tpTime::Type duration) |
Let time pass without executing a transition. | |
virtual bool | ExecuteEvent (Idx event) |
Execute transition. | |
tpTime::Type | CurrentTime (void) const |
Get clock time. | |
void | CurrentTime (tpTime::Type time) |
Set clock time. | |
int | CurrentStep (void) const |
Get logical time, ie number of transitions so far,. | |
void | CurrentStep (int step) |
Set logical time (# of steps). | |
bool | CurrentParallelTimedState (const ParallelTimedState &ptstate) |
Set current state of the ParallelExecutor. | |
const ParallelTimedState & | CurrentParallelTimedState (void) const |
Get current state of the ParallelExecutor. | |
Protected Member Functions | |
virtual void | Compile () |
Compile internal data (all). | |
virtual void | DoRead (TokenReader &rTr, const std::string &rLabel="", const Type *pContext=0) |
Reads logging executor from TokenReader, see also public wrappers in faudes::Type. | |
virtual void | DoWrite (TokenWriter &rTw, const std::string &rLabel="", const Type *pContext=0) const |
Write to TokenWriter, see also public wrappers in faudes::Type. | |
virtual void | DoAssign (const LoggingExecutor &rSrc) |
Assignment method. | |
Private Member Functions | |
void | CompileConditions (void) |
Compile condition internal data. | |
void | ConditionsReset (void) |
Reset condition simulation state. | |
void | ConditionsProcess (void) |
Process condition hook. | |
void | LogWriteStatistics (void) |
Logging hook: dump statistics. | |
void | LogWriteState (void) |
Logging hook: dump current state. | |
void | LogWriteEvent (void) |
Logging hook: dump recent event. | |
void | LogWriteTime (void) |
Logging hook: dump current time. | |
void | LogWritePause (void) |
Logging hook: halt simulation. | |
void | LogWriteResume (void) |
Logging hook: continue simulation. | |
void | TraceAddSample (void) |
Trace: helper, append one void sample. | |
void | TraceUpdateTime (void) |
Trace: append sample (if necessary) and update to current time. | |
void | TraceUpdateTransition (Idx event) |
Trace: append sample (if necessary) and update to current state via given event. | |
Private Attributes | |
SimConditionSet | mConditions |
Simulation conditions. | |
std::vector < AttributeSimCondition * > | mEnabledConditions |
Enabled simulation conditions. | |
bool | mBreakCondition |
Indicate break. | |
TokenWriter * | pLogTokenWriter |
Logging: tokenwriter ref. | |
std::string | mLogFile |
Logging: file name. | |
int | mLogMode |
Logging: mode. | |
int | mTraceMax |
Trace data: max fifo length. | |
int | mTraceFirstStep |
Trace data: step no of first sample. | |
std::deque< TraceSample > | mTraceBuffer |
Trace data: fifo buffer. | |
std::map< tpTime::Type, int > | mTraceTimeToStep |
Trace data: time to step mapping (first step). | |
Logging to Token I/O | |
| |
enum | LogMode { Statistics = 0x01, States = 0x02, Events = 0x04, Time = 0x08 } |
Logging mode flags, to specify what data to log. More... | |
void | LogOpen (TokenWriter &rTw, int mode) |
Start logging to TokenWriter. | |
void | LogOpen (const std::string &rFileName, int logmode, std::ios::openmode openmode=std::ios::out|std::ios::trunc) |
Start logging to file. | |
void | LogClose (void) |
Stop logging. | |
Simulation Conditions | |
| |
typedef SimConditionSet::Iterator | ConditionIterator |
Condition iterator: typedef. | |
const SimConditionSet & | Conditions (void) const |
Read-only access to simulation conditions. | |
void | Conditions (const SimConditionSet &) |
Set all simulation conditions. | |
const AttributeSimCondition & | Condition (const std::string &rName) const |
Read-only access to a simulation condition by name. | |
const AttributeSimCondition & | Condition (Idx cond) const |
Read-only access to a simulation condition by index. | |
Idx | SetCondition (const std::string &rName, const AttributeSimCondition &rCondition) |
Set (or add) a condition by name. | |
void | SetCondition (Idx cond, const AttributeSimCondition &rCondition) |
Set a condition by index. | |
void | ClrCondition (const std::string &rName) |
Remove a condition by name. | |
void | ClrCondition (Idx cond) |
Remove a condition by index. | |
void | ConditionsWrite (TokenWriter &rTw, const std::string &rLabel="SimConditions") const |
Write conditions so labled section. | |
void | ConditionsRead (TokenReader &rTr, const std::string &rLabel="SimConditions") |
Read conditions from labled section. | |
ConditionIterator | ConditionsBegin (void) const |
Condition iterator: begin. | |
ConditionIterator | ConditionsEnd (void) const |
Condition iterator: end. | |
bool | BreakCondition (void) const |
Simulation state: true if some break condition is currently satisfied. | |
Trace to FIFO buffer | |
| |
typedef std::deque < TraceSample > ::const_iterator | TraceIterator |
Access buffer: iterator. | |
void | TraceClear (int length=-2) |
Clear buffer and set max buffer. | |
int | TraceLength (void) const |
Access buffer: current length. | |
TraceIterator | TraceBegin (void) const |
Condition iterator: begin. | |
TraceIterator | TraceEnd (void) const |
Condition iterator: end. | |
const TraceSample * | TraceAtTime (tpTime::Type time) const |
Access buffer: sample by faudes time (returns first sample). | |
const TraceSample * | TraceAtStep (int step) const |
Access buffer: sample by step. | |
const TraceSample * | TraceFirst (void) const |
Access buffer: first sample. | |
const TraceSample * | TraceRecent (void) const |
Access buffer: recent sample. | |
const TraceSample * | TraceCurrent (void) const |
Access buffer: current sample. | |
void | TraceWrite (TokenWriter &rTw, const TraceSample &sample) const |
Access buffer: tokenwriter output. | |
void | TraceWrite (const TraceSample &sample) const |
Access buffer: console output. | |
std::string | TraceToString (const TraceSample &sample) const |
Access buffer: convert to string. | |
void | TraceWrite (void) const |
Access buffer: console output (list all). | |
virtual bool | RevertToStep (Idx step) |
Revert executors state to past step from buffer. |
Executor with logging facilities.
Logging destination in general is a TokenWriter, which may be initialised to a file or console output. Logging can be configured to include
The state- and event-sequence can be logged to a internal FIFO Buffer. Methods to revert to a previous state are provided. This feature is meant to facilitate user interaction in simulator applications.
Technical detail: since the trace buffer only covers the dynamic state of the parallel executor, the RevertToStep method cannot recover the condition status. Including stochastic states with the trace buffer is considered to expensive.
For token IO, the LoggingExecutor reads and writes a section with default label "Executor". It contains a ParallelExecutor section to define a vector of generators and a SimConditionSet section to define the relevant conditions. Example:
<Executor> <Generators> "./some_generator.gen" "./other_generator.gen" </Generators> <Conditions> "IdleCond" <EventCondition> <StartEvents> "beta" "mue" </StartEvents> <StopEvents> "alpha" </StopEvents> </EventCondition> "DownCond" <StateCondition> <StateSet> "down" </StateSet> % refers to first generator <StateSet> "down" "repair" </StateSet> % refers to second generator </StateCondition> </Conditions> </Executor>
Definition at line 85 of file sp_lpexecutor.h.
Condition iterator: typedef.
Definition at line 292 of file sp_lpexecutor.h.
typedef std::deque<TraceSample>::const_iterator faudes::LoggingExecutor::TraceIterator |
Access buffer: iterator.
Definition at line 356 of file sp_lpexecutor.h.
Logging mode flags, to specify what data to log.
doxygen group
Definition at line 314 of file sp_lpexecutor.h.
faudes::LoggingExecutor::LoggingExecutor | ( | void | ) |
faudes::LoggingExecutor::LoggingExecutor | ( | const LoggingExecutor & | rOther | ) |
Copy constructor.
Definition at line 30 of file sp_lpexecutor.cpp.
faudes::LoggingExecutor::LoggingExecutor | ( | const std::string & | rFileName | ) |
Construct from file.
See ParallelExecutor::Insert(const std::string& rFileName) for details.
rFileName | Filename |
Exception |
|
Definition at line 39 of file sp_lpexecutor.cpp.
faudes::LoggingExecutor::~LoggingExecutor | ( | void | ) | [virtual] |
Explicit destructor.
Definition at line 48 of file sp_lpexecutor.cpp.
bool faudes::LoggingExecutor::BreakCondition | ( | void | ) | const [inline] |
Simulation state: true if some break condition is currently satisfied.
Definition at line 301 of file sp_lpexecutor.h.
void faudes::LoggingExecutor::Clear | ( | void | ) | [virtual] |
Clear all data.
doxygen group Removes all generators/executors, all conditions, and resets the current state to a void value.
Reimplemented from faudes::ParallelExecutor.
Reimplemented in faudes::DeviceExecutor, and faudes::ProposingExecutor.
Definition at line 89 of file sp_lpexecutor.cpp.
void faudes::LoggingExecutor::ClrCondition | ( | Idx | cond | ) |
Remove a condition by index.
Definition at line 266 of file sp_lpexecutor.cpp.
void faudes::LoggingExecutor::ClrCondition | ( | const std::string & | rName | ) |
Remove a condition by name.
Definition at line 260 of file sp_lpexecutor.cpp.
void faudes::LoggingExecutor::Compile | ( | void | ) | [protected, virtual] |
Compile internal data (all).
Reimplemented from faudes::ParallelExecutor.
Definition at line 63 of file sp_lpexecutor.cpp.
void faudes::LoggingExecutor::CompileConditions | ( | void | ) | [private] |
Compile condition internal data.
Definition at line 294 of file sp_lpexecutor.cpp.
const AttributeSimCondition & faudes::LoggingExecutor::Condition | ( | Idx | cond | ) | const |
Read-only access to a simulation condition by index.
Definition at line 228 of file sp_lpexecutor.cpp.
const AttributeSimCondition & faudes::LoggingExecutor::Condition | ( | const std::string & | rName | ) | const |
Read-only access to a simulation condition by name.
Definition at line 223 of file sp_lpexecutor.cpp.
void faudes::LoggingExecutor::Conditions | ( | const SimConditionSet & | rConditions | ) |
Set all simulation conditions.
Definition at line 214 of file sp_lpexecutor.cpp.
const SimConditionSet & faudes::LoggingExecutor::Conditions | ( | void | ) | const |
Read-only access to simulation conditions.
doxygen group
Definition at line 209 of file sp_lpexecutor.cpp.
LoggingExecutor::ConditionIterator faudes::LoggingExecutor::ConditionsBegin | ( | void | ) | const |
Condition iterator: begin.
Definition at line 284 of file sp_lpexecutor.cpp.
LoggingExecutor::ConditionIterator faudes::LoggingExecutor::ConditionsEnd | ( | void | ) | const |
Condition iterator: end.
Definition at line 289 of file sp_lpexecutor.cpp.
void faudes::LoggingExecutor::ConditionsProcess | ( | void | ) | [private] |
Process condition hook.
Definition at line 327 of file sp_lpexecutor.cpp.
void faudes::LoggingExecutor::ConditionsRead | ( | TokenReader & | rTr, | |
const std::string & | rLabel = "SimConditions" | |||
) |
Read conditions from labled section.
Definition at line 277 of file sp_lpexecutor.cpp.
void faudes::LoggingExecutor::ConditionsReset | ( | void | ) | [private] |
Reset condition simulation state.
Definition at line 320 of file sp_lpexecutor.cpp.
void faudes::LoggingExecutor::ConditionsWrite | ( | TokenWriter & | rTw, | |
const std::string & | rLabel = "SimConditions" | |||
) | const |
Write conditions so labled section.
Definition at line 272 of file sp_lpexecutor.cpp.
const ParallelTimedState& faudes::LoggingExecutor::CurrentParallelTimedState | ( | void | ) | const [inline] |
Get current state of the ParallelExecutor.
Reimplemented from faudes::ParallelExecutor.
Definition at line 248 of file sp_lpexecutor.h.
bool faudes::LoggingExecutor::CurrentParallelTimedState | ( | const ParallelTimedState & | ptstate | ) | [virtual] |
Set current state of the ParallelExecutor.
This resets the parallel executor to the given state, incl clock values. The trace buffer is cleared. You should pause/resume logging befor/after interfering with the executors state.
Reimplemented from faudes::ParallelExecutor.
Definition at line 196 of file sp_lpexecutor.cpp.
void faudes::LoggingExecutor::CurrentStep | ( | int | step | ) | [virtual] |
Set logical time (# of steps).
This does not affect clocks and, hence, is purely cosmetic. Note that, in contrast to clock time, the individual generators do not agree in logical time. The trace buffer is cleared. You should pause/resume logging befor/after interfering with the executors state.
step | New logical time |
Reimplemented from faudes::ParallelExecutor.
Definition at line 176 of file sp_lpexecutor.cpp.
int faudes::LoggingExecutor::CurrentStep | ( | void | ) | const [inline] |
Get logical time, ie number of transitions so far,.
Reimplemented from faudes::ParallelExecutor.
Definition at line 213 of file sp_lpexecutor.h.
void faudes::LoggingExecutor::CurrentTime | ( | tpTime::Type | time | ) | [virtual] |
Set clock time.
This does not affect clocks and, hence, is purely cosmetic. The trace buffer is cleared. You should pause/resume logging befor/after interfering with the executors state.
time | New clock time |
Reimplemented from faudes::ParallelExecutor.
Definition at line 186 of file sp_lpexecutor.cpp.
tpTime::Type faudes::LoggingExecutor::CurrentTime | ( | void | ) | const [inline] |
Get clock time.
Reimplemented from faudes::ParallelExecutor.
Definition at line 196 of file sp_lpexecutor.h.
void faudes::LoggingExecutor::DoAssign | ( | const LoggingExecutor & | rSrc | ) | [protected, virtual] |
Assignment method.
rSrc | Source to assign from |
Definition at line 54 of file sp_lpexecutor.cpp.
void faudes::LoggingExecutor::DoRead | ( | TokenReader & | rTr, | |
const std::string & | rLabel = "" , |
|||
const Type * | pContext = 0 | |||
) | [protected, virtual] |
Reads logging executor from TokenReader, see also public wrappers in faudes::Type.
rTr | TokenReader to read from | |
rLabel | Section to read, defaults to "Executor" | |
pContext | Read context to provide contextual information (ignored) |
Exception |
|
Reimplemented from faudes::ParallelExecutor.
Reimplemented in faudes::ProposingExecutor.
Definition at line 112 of file sp_lpexecutor.cpp.
void faudes::LoggingExecutor::DoWrite | ( | TokenWriter & | rTw, | |
const std::string & | rLabel = "" , |
|||
const Type * | pContext = 0 | |||
) | const [protected, virtual] |
Write to TokenWriter, see also public wrappers in faudes::Type.
rTw | Reference to TokenWriter | |
rLabel | Label of section to write, defaults to "Executor" | |
pContext | Write context to provide contextual information (ignored) |
Exception |
|
Reimplemented from faudes::ParallelExecutor.
Reimplemented in faudes::ProposingExecutor.
Definition at line 101 of file sp_lpexecutor.cpp.
bool faudes::LoggingExecutor::ExecuteEvent | ( | Idx | event | ) | [virtual] |
Execute transition.
Returns false if the transition cannot be executed at the current time.
event | Indicate transition to execute |
Reimplemented from faudes::ParallelExecutor.
Reimplemented in faudes::DeviceExecutor, and faudes::ProposingExecutor.
Definition at line 158 of file sp_lpexecutor.cpp.
bool faudes::LoggingExecutor::ExecuteTime | ( | tpTime::Type | duration | ) | [virtual] |
Let time pass without executing a transition.
Return false if the specified duration cannot elapse without an event being executed.
duration | Amount of time that shall elapse. |
Reimplemented from faudes::ParallelExecutor.
Reimplemented in faudes::ProposingExecutor.
Definition at line 146 of file sp_lpexecutor.cpp.
void faudes::LoggingExecutor::LogClose | ( | void | ) |
Stop logging.
Definition at line 417 of file sp_lpexecutor.cpp.
void faudes::LoggingExecutor::LogOpen | ( | const std::string & | rFileName, | |
int | logmode, | |||
std::ios::openmode | openmode = std::ios::out|std::ios::trunc | |||
) |
Start logging to file.
Definition at line 408 of file sp_lpexecutor.cpp.
void faudes::LoggingExecutor::LogOpen | ( | TokenWriter & | rTw, | |
int | mode | |||
) |
Start logging to TokenWriter.
Definition at line 391 of file sp_lpexecutor.cpp.
void faudes::LoggingExecutor::LogWriteEvent | ( | void | ) | [private] |
Logging hook: dump recent event.
Definition at line 467 of file sp_lpexecutor.cpp.
void faudes::LoggingExecutor::LogWritePause | ( | void | ) | [private] |
Logging hook: halt simulation.
Definition at line 493 of file sp_lpexecutor.cpp.
void faudes::LoggingExecutor::LogWriteResume | ( | void | ) | [private] |
Logging hook: continue simulation.
Definition at line 505 of file sp_lpexecutor.cpp.
void faudes::LoggingExecutor::LogWriteState | ( | void | ) | [private] |
Logging hook: dump current state.
Definition at line 457 of file sp_lpexecutor.cpp.
void faudes::LoggingExecutor::LogWriteStatistics | ( | void | ) | [private] |
Logging hook: dump statistics.
Definition at line 436 of file sp_lpexecutor.cpp.
void faudes::LoggingExecutor::LogWriteTime | ( | void | ) | [private] |
Logging hook: dump current time.
Definition at line 480 of file sp_lpexecutor.cpp.
void faudes::LoggingExecutor::Reset | ( | void | ) | [virtual] |
Goto initial state.
Reset all clock values to zero, assign initial states to each executor, reset condition states to not-satisfied, invalidate timing samples.
Reimplemented from faudes::ParallelExecutor.
Definition at line 73 of file sp_lpexecutor.cpp.
bool faudes::LoggingExecutor::RevertToStep | ( | Idx | step | ) | [virtual] |
Revert executors state to past step from buffer.
Reimplemented in faudes::ProposingExecutor.
Definition at line 656 of file sp_lpexecutor.cpp.
void faudes::LoggingExecutor::SetCondition | ( | Idx | cond, | |
const AttributeSimCondition & | rCondition | |||
) |
Set a condition by index.
Definition at line 254 of file sp_lpexecutor.cpp.
Idx faudes::LoggingExecutor::SetCondition | ( | const std::string & | rName, | |
const AttributeSimCondition & | rCondition | |||
) |
Set (or add) a condition by name.
Definition at line 247 of file sp_lpexecutor.cpp.
void faudes::LoggingExecutor::TraceAddSample | ( | void | ) | [private] |
Trace: helper, append one void sample.
Definition at line 579 of file sp_lpexecutor.cpp.
const LoggingExecutor::TraceSample * faudes::LoggingExecutor::TraceAtStep | ( | int | step | ) | const |
Access buffer: sample by step.
Definition at line 539 of file sp_lpexecutor.cpp.
const LoggingExecutor::TraceSample * faudes::LoggingExecutor::TraceAtTime | ( | tpTime::Type | time | ) | const |
Access buffer: sample by faudes time (returns first sample).
Definition at line 547 of file sp_lpexecutor.cpp.
LoggingExecutor::TraceIterator faudes::LoggingExecutor::TraceBegin | ( | void | ) | const |
Condition iterator: begin.
Definition at line 529 of file sp_lpexecutor.cpp.
void faudes::LoggingExecutor::TraceClear | ( | int | length = -2 |
) |
Clear buffer and set max buffer.
doxygen group
length | Max length of buffer, or: -2 <> keep length, -1<>infinite, 0<> no buffer |
Definition at line 513 of file sp_lpexecutor.cpp.
const LoggingExecutor::TraceSample * faudes::LoggingExecutor::TraceCurrent | ( | void | ) | const |
Access buffer: current sample.
Definition at line 556 of file sp_lpexecutor.cpp.
LoggingExecutor::TraceIterator faudes::LoggingExecutor::TraceEnd | ( | void | ) | const |
Condition iterator: end.
Definition at line 534 of file sp_lpexecutor.cpp.
const LoggingExecutor::TraceSample * faudes::LoggingExecutor::TraceFirst | ( | void | ) | const |
Access buffer: first sample.
Definition at line 568 of file sp_lpexecutor.cpp.
int faudes::LoggingExecutor::TraceLength | ( | void | ) | const |
Access buffer: current length.
Definition at line 574 of file sp_lpexecutor.cpp.
const LoggingExecutor::TraceSample * faudes::LoggingExecutor::TraceRecent | ( | void | ) | const |
Access buffer: recent sample.
Definition at line 562 of file sp_lpexecutor.cpp.
std::string faudes::LoggingExecutor::TraceToString | ( | const TraceSample & | sample | ) | const |
Access buffer: convert to string.
Definition at line 649 of file sp_lpexecutor.cpp.
void faudes::LoggingExecutor::TraceUpdateTime | ( | void | ) | [private] |
Trace: append sample (if necessary) and update to current time.
Definition at line 612 of file sp_lpexecutor.cpp.
void faudes::LoggingExecutor::TraceUpdateTransition | ( | Idx | event | ) | [private] |
Trace: append sample (if necessary) and update to current state via given event.
Definition at line 600 of file sp_lpexecutor.cpp.
void faudes::LoggingExecutor::TraceWrite | ( | void | ) | const |
Access buffer: console output (list all).
Definition at line 642 of file sp_lpexecutor.cpp.
void faudes::LoggingExecutor::TraceWrite | ( | const TraceSample & | sample | ) | const |
Access buffer: console output.
Definition at line 636 of file sp_lpexecutor.cpp.
void faudes::LoggingExecutor::TraceWrite | ( | TokenWriter & | rTw, | |
const TraceSample & | sample | |||
) | const |
Access buffer: tokenwriter output.
Definition at line 623 of file sp_lpexecutor.cpp.
virtual bool faudes::LoggingExecutor::Valid | ( | void | ) | const [inline, virtual] |
Check validity of executors.
This is currently not implemented. It should include tests on the state based conditions.
Reimplemented from faudes::ParallelExecutor.
Definition at line 164 of file sp_lpexecutor.h.
bool faudes::LoggingExecutor::mBreakCondition [private] |
Indicate break.
Definition at line 453 of file sp_lpexecutor.h.
Simulation conditions.
Definition at line 447 of file sp_lpexecutor.h.
std::vector<AttributeSimCondition*> faudes::LoggingExecutor::mEnabledConditions [private] |
Enabled simulation conditions.
Definition at line 450 of file sp_lpexecutor.h.
std::string faudes::LoggingExecutor::mLogFile [private] |
Logging: file name.
Definition at line 468 of file sp_lpexecutor.h.
int faudes::LoggingExecutor::mLogMode [private] |
Logging: mode.
Definition at line 471 of file sp_lpexecutor.h.
std::deque<TraceSample> faudes::LoggingExecutor::mTraceBuffer [private] |
Trace data: fifo buffer.
Definition at line 498 of file sp_lpexecutor.h.
int faudes::LoggingExecutor::mTraceFirstStep [private] |
Trace data: step no of first sample.
Definition at line 495 of file sp_lpexecutor.h.
int faudes::LoggingExecutor::mTraceMax [private] |
Trace data: max fifo length.
Definition at line 492 of file sp_lpexecutor.h.
std::map<tpTime::Type,int> faudes::LoggingExecutor::mTraceTimeToStep [private] |
Trace data: time to step mapping (first step).
Definition at line 501 of file sp_lpexecutor.h.
Logging: tokenwriter ref.
Definition at line 465 of file sp_lpexecutor.h.
libFAUDES 2.23h --- 2014.04.03 --- c++ api documentaion by doxygen