libFAUDES

Sections

Index

faudes::LoggingExecutor Class Reference
[Simulator PlugIn]

#include <sp_lpexecutor.h>

Inherits faudes::ParallelExecutor.

Inherited by faudes::ProposingExecutor.

List of all members.


Detailed Description

Executor with logging facilities.

Logging to Token IO

Logging destination in general is a TokenWriter, which may be initialised to a file or console output. Logging can be configured to include
  • the external behaviour (timed event sequence),
  • the internal behaviour (state sequence) and/or
  • timing statistics of conditions specified by SimConditionAttribute.

Logging to Internal FIFO Buffer

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.

File IO

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> 

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 SimConditionSetConditions (void) const
 Read-only access to simulation conditions.
void Conditions (const SimConditionSet &)
 Set all simulation conditions.
const SimConditionAttributeCondition (const std::string &rName) const
 Read-only access to a simulation condition by name.
const SimConditionAttributeCondition (Idx cond) const
 Read-only access to a simulation condition by index.
Idx SetCondition (const std::string &rName, const SimConditionAttribute &rCondition)
 Set (or add) a condition by name.
void SetCondition (Idx cond, const SimConditionAttribute &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 TraceSampleTraceAtTime (tpTime::Type time) const
 Access buffer: sample by faudes time (returns first sample).
const TraceSampleTraceAtStep (int step) const
 Access buffer: sample by step.
const TraceSampleTraceRecent (void) const
 Access buffer: recent sample.
const TraceSampleTraceCurrent (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.

Public Member Functions

Constructors & Destructor
 LoggingExecutor (void)
 Construct an emtpy LoggingExecuter.
 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 ParallelTimedStateCurrentParallelTimedState (void) const
 Get current state of the ParallelExecutor.

Protected Member Functions

virtual void Compile ()
 Compile internal data (all).

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.
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.

Private Attributes

SimConditionSet mConditions
 Simulation conditions.
std::vector
< SimConditionAttribute * > 
mEnabledConditions
 Enabled simulation conditions.
bool mBreakCondition
 Indicate break.
TokenWriterpLogTokenWriter
 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< TraceSamplemTraceBuffer
 Trace data: fifo buffer.
std::map< tpTime::Type, int > mTraceTimeToStep
 Trace data: time to step mapping (first step).

Classes

struct  TraceSample
 Buffer data entry. More...

Member Typedef Documentation

typedef std::deque<TraceSample>::const_iterator faudes::LoggingExecutor::TraceIterator

Access buffer: iterator.


Member Enumeration Documentation

Logging mode flags, to specify what data to log.

doxygen group

Enumerator:
Statistics 
States 
Events 
Time 


Constructor & Destructor Documentation

faudes::LoggingExecutor::LoggingExecutor ( void   ) 

Construct an emtpy LoggingExecuter.

doxygen group

faudes::LoggingExecutor::LoggingExecutor ( const std::string &  rFileName  ) 

Construct from file.

See ParallelExecutor::Insert(const std::string& rFileName) for details.

Parameters:
rFileName Filename
Exceptions:
Exception 
  • Non-deteministic generator (id 501)
  • IO errors (id 1)
  • token mismatch (id see tGenerator)

faudes::LoggingExecutor::~LoggingExecutor ( void   )  [virtual]

Explicit destructor.


Member Function Documentation

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.

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.

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.

Returns:
True on success

Reimplemented from faudes::ParallelExecutor.

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.

Parameters:
duration Amount of time that shall elapse.
Returns:
True for success

Reimplemented from faudes::ParallelExecutor.

Reimplemented in faudes::ProposingExecutor.

bool faudes::LoggingExecutor::ExecuteEvent ( Idx  event  )  [virtual]

Execute transition.

Returns false if the transition cannot be executed at the current time.

Parameters:
event Indicate transition to execute
Returns:
True on success

Reimplemented from faudes::ParallelExecutor.

Reimplemented in faudes::DeviceExecutor, and faudes::ProposingExecutor.

tpTime::Type faudes::LoggingExecutor::CurrentTime ( void   )  const [inline]

Get clock time.

Reimplemented from faudes::ParallelExecutor.

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.

Parameters:
time New clock time

Reimplemented from faudes::ParallelExecutor.

int faudes::LoggingExecutor::CurrentStep ( void   )  const [inline]

Get logical time, ie number of transitions so far,.

Reimplemented from faudes::ParallelExecutor.

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.

Parameters:
step New logical time

Reimplemented from faudes::ParallelExecutor.

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.

Returns:
True for success

Reimplemented from faudes::ParallelExecutor.

const ParallelTimedState& faudes::LoggingExecutor::CurrentParallelTimedState ( void   )  const [inline]

Get current state of the ParallelExecutor.

Returns:
Discrete state vector and clock value maps

Reimplemented from faudes::ParallelExecutor.

const SimConditionSet & faudes::LoggingExecutor::Conditions ( void   )  const

Read-only access to simulation conditions.

doxygen group

void faudes::LoggingExecutor::Conditions ( const SimConditionSet rConditions  ) 

Set all simulation conditions.

const SimConditionAttribute & faudes::LoggingExecutor::Condition ( const std::string &  rName  )  const

Read-only access to a simulation condition by name.

const SimConditionAttribute & faudes::LoggingExecutor::Condition ( Idx  cond  )  const

Read-only access to a simulation condition by index.

Idx faudes::LoggingExecutor::SetCondition ( const std::string &  rName,
const SimConditionAttribute rCondition 
)

Set (or add) a condition by name.

void faudes::LoggingExecutor::SetCondition ( Idx  cond,
const SimConditionAttribute rCondition 
)

Set a condition by index.

void faudes::LoggingExecutor::ClrCondition ( const std::string &  rName  ) 

Remove a condition by name.

void faudes::LoggingExecutor::ClrCondition ( Idx  cond  ) 

Remove a condition by index.

void faudes::LoggingExecutor::ConditionsWrite ( TokenWriter rTw,
const std::string &  rLabel = "SimConditions" 
) const

Write conditions so labled section.

void faudes::LoggingExecutor::ConditionsRead ( TokenReader rTr,
const std::string &  rLabel = "SimConditions" 
)

Read conditions from labled section.

LoggingExecutor::ConditionIterator faudes::LoggingExecutor::ConditionsBegin ( void   )  const

Condition iterator: begin.

LoggingExecutor::ConditionIterator faudes::LoggingExecutor::ConditionsEnd ( void   )  const

Condition iterator: end.

bool faudes::LoggingExecutor::BreakCondition ( void   )  const [inline]

Simulation state: true if some break condition is currently satisfied.

void faudes::LoggingExecutor::LogOpen ( TokenWriter rTw,
int  mode 
)

Start logging to TokenWriter.

void faudes::LoggingExecutor::LogOpen ( const std::string &  rFileName,
int  logmode,
std::ios::openmode  openmode = std::ios::out|std::ios::trunc 
)

Start logging to file.

void faudes::LoggingExecutor::LogClose ( void   ) 

Stop logging.

void faudes::LoggingExecutor::TraceClear ( int  length = -2  ) 

Clear buffer and set max buffer.

doxygen group

Parameters:
length Max length of buffet, or: -2 <> keep length, -1<>infinite, 0<> no buffer

int faudes::LoggingExecutor::TraceLength ( void   )  const

Access buffer: current length.

LoggingExecutor::TraceIterator faudes::LoggingExecutor::TraceBegin ( void   )  const

Condition iterator: begin.

LoggingExecutor::TraceIterator faudes::LoggingExecutor::TraceEnd ( void   )  const

Condition iterator: end.

const LoggingExecutor::TraceSample * faudes::LoggingExecutor::TraceAtTime ( tpTime::Type  time  )  const

Access buffer: sample by faudes time (returns first sample).

const LoggingExecutor::TraceSample * faudes::LoggingExecutor::TraceAtStep ( int  step  )  const

Access buffer: sample by step.

const LoggingExecutor::TraceSample * faudes::LoggingExecutor::TraceRecent ( void   )  const

Access buffer: recent sample.

const LoggingExecutor::TraceSample * faudes::LoggingExecutor::TraceCurrent ( void   )  const

Access buffer: current sample.

void faudes::LoggingExecutor::TraceWrite ( TokenWriter rTw,
const TraceSample sample 
) const

Access buffer: tokenwriter output.

void faudes::LoggingExecutor::TraceWrite ( const TraceSample sample  )  const

Access buffer: console output.

std::string faudes::LoggingExecutor::TraceToString ( const TraceSample sample  )  const

Access buffer: convert to string.

void faudes::LoggingExecutor::TraceWrite ( void   )  const

Access buffer: console output (list all).

bool faudes::LoggingExecutor::RevertToStep ( Idx  step  )  [virtual]

Revert executors state to past step from buffer.

Reimplemented in faudes::ProposingExecutor.

void faudes::LoggingExecutor::Compile ( void   )  [protected, virtual]

Compile internal data (all).

Reimplemented from faudes::ParallelExecutor.

void faudes::LoggingExecutor::CompileConditions ( void   )  [private]

Compile condition internal data.

void faudes::LoggingExecutor::ConditionsReset ( void   )  [private]

Reset condition simulation state.

void faudes::LoggingExecutor::ConditionsProcess ( void   )  [private]

Process condition hook.

void faudes::LoggingExecutor::LogWriteStatistics ( void   )  [private]

Logging hook: dump statistics.

void faudes::LoggingExecutor::LogWriteState ( void   )  [private]

Logging hook: dump current state.

void faudes::LoggingExecutor::LogWriteEvent ( void   )  [private]

Logging hook: dump recent event.

void faudes::LoggingExecutor::LogWriteTime ( void   )  [private]

Logging hook: dump current time.

void faudes::LoggingExecutor::LogWritePause ( void   )  [private]

Logging hook: halt simulation.

void faudes::LoggingExecutor::LogWriteResume ( void   )  [private]

Logging hook: continue simulation.

void faudes::LoggingExecutor::TraceAddSample ( void   )  [private]

Trace: helper, append one void sample.

void faudes::LoggingExecutor::TraceUpdateTime ( void   )  [private]

Trace: append sample (if necessary) and update to current time.

void faudes::LoggingExecutor::TraceUpdateTransition ( Idx  event  )  [private]

Trace: append sample (if necessary) and update to current state via given event.

void faudes::LoggingExecutor::DoRead ( TokenReader rTr,
const std::string &  rLabel = "",
const Type pContext = 0 
) [private, virtual]

Reads logging executor from TokenReader, see also public wrappers in faudes::Type.

Parameters:
rTr TokenReader to read from
rLabel Section to read, defaults to "Executor"
pContext Read context to provide contextual information (ignored)
Exceptions:
Exception 
  • non-deterministic generator(s) (id 501)
  • token mismatch (id 502)
  • IO error (id 1)

Reimplemented from faudes::ParallelExecutor.

Reimplemented in faudes::ProposingExecutor.

void faudes::LoggingExecutor::DoWrite ( TokenWriter rTw,
const std::string &  rLabel = "",
const Type pContext = 0 
) const [private, virtual]

Write to TokenWriter, see also public wrappers in faudes::Type.

Parameters:
rTw Reference to TokenWriter
rLabel Label of section to write, defaults to "Executor"
pContext Write context to provide contextual information (ignored)
Exceptions:
Exception 
  • IO errors (id 2)

Reimplemented from faudes::ParallelExecutor.

Reimplemented in faudes::ProposingExecutor.


Member Data Documentation

Simulation conditions.

Enabled simulation conditions.

Indicate break.

Logging: tokenwriter ref.

std::string faudes::LoggingExecutor::mLogFile [private]

Logging: file name.

Logging: mode.

Trace data: max fifo length.

Trace data: step no of first sample.

Trace data: fifo buffer.

Trace data: time to step mapping (first step).


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

libFAUDES 2.13a c++ source docu by doxygen 1.5.6