Open Model Railroad Network (OpenMRN)
Loading...
Searching...
No Matches
StateFlowBase::StateFlowTimer Class Reference

Use this timer class to deliver the timeout notification to a stateflow. More...

#include <StateFlow.hxx>

Inheritance diagram for StateFlowBase::StateFlowTimer:
Timer Executable Notifiable QMember Destructable

Public Member Functions

 StateFlowTimer (StateFlowBase *parent)
 Constructor.
 
long long timeout () override
 Clients of timer should override this function.
 
- Public Member Functions inherited from Timer
 Timer (ActiveTimers *timers)
 Constructor.
 
 ~Timer ()
 Destructor.
 
void run () override
 Callback from the executor when this timer is scheduled.
 
long long schedule_time ()
 
void start (long long period=-1)
 Starts a timer.
 
void start_absolute (long long expiry_time_nsec)
 Starts the timer with an absolute deadline.
 
void restart ()
 Restart a timer with the existing period but from the current time.
 
void trigger ()
 This will wakeup the timer prematurely, immediately.
 
void ensure_triggered ()
 Triggers the timer if it is not expired yet.
 
void cancel ()
 Dangerous, do not call.
 
bool is_triggered ()
 
void set_triggered ()
 Sets the timer as if it was woken up by a trigger(), even if it was never started.
 
- Public Member Functions inherited from Executable
void test_deletion ()
 
void notify () override
 Crashes the program – everyone who is expecting notify calls must override this function.
 
virtual void alloc_result (QMember *item)
 Return the result of an alloc_async() from a memory Pool.
 
- Public Member Functions inherited from QMember
void init ()
 Initiailize a QMember, in place of a public placement construction.
 

Protected Attributes

StateFlowBaseparent_
 The timer will deliver notifications to this flow.
 
- Protected Attributes inherited from QMember
QMembernext
 pointer to the next member in the queue
 

Additional Inherited Members

- Public Types inherited from Timer
enum  { NONE = 0 , RESTART = 1 , DELETE = -1 }
 Special return values from the timeout function. More...
 
- Protected Member Functions inherited from Timer
void update_period (long long period)
 Updates the period, to be used after the next expiration of the timer in order to restart it.
 
- Protected Member Functions inherited from QMember
 QMember ()
 Constructor.
 
 ~QMember ()
 Destructor.
 

Detailed Description

Use this timer class to deliver the timeout notification to a stateflow.

Usage:

in the StateFlow class create a variable StateFlowTimer timer_; in the constructor initialize it with , timer_(this). then in the state function do return sleep_and_call(&timer_, MSEC_TO_NSEC(200), STATE(next_after_timeout)); If needed, you can wake up the timer in a handler function by calling timer_.trigger(). This will transition to the new state immediately.

Definition at line 462 of file StateFlow.hxx.

Constructor & Destructor Documentation

◆ StateFlowTimer()

StateFlowBase::StateFlowTimer::StateFlowTimer ( StateFlowBase parent)
inline

Constructor.

Parameters
parentis the stateflow owning *this.

Definition at line 466 of file StateFlow.hxx.

Member Function Documentation

◆ timeout()

long long StateFlowBase::StateFlowTimer::timeout ( )
inlineoverridevirtual

Clients of timer should override this function.

It will be called on the executor of the timer.

Returns
the new timer period, or one of the above special values.

Implements Timer.

Definition at line 472 of file StateFlow.hxx.

Member Data Documentation

◆ parent_

StateFlowBase* StateFlowBase::StateFlowTimer::parent_
protected

The timer will deliver notifications to this flow.

Definition at line 480 of file StateFlow.hxx.


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