Vanetza
 
Loading...
Searching...
No Matches
vanetza::ManualRuntime Class Reference

#include <manual_runtime.hpp>

Inheritance diagram for vanetza::ManualRuntime:

Classes

struct  by_deadline
 
struct  by_scope
 
struct  ScheduledCallback
 

Public Types

using Callback = std::function< void(Clock::time_point)>
 

Public Member Functions

 ManualRuntime (Clock::time_point init)
 
void trigger (Clock::time_point tp)
 
void trigger (Clock::duration d)
 
void reset (Clock::time_point tp)
 
Clock::time_point next () const
 
void schedule (Clock::time_point, const Callback &, const void *=nullptr) override
 
void schedule (Clock::duration, const Callback &, const void *=nullptr) override
 
void cancel (const void *scope) override
 
Clock::time_point now () const override
 

Private Types

using time_index = boost::multi_index::ordered_non_unique< boost::multi_index::tag< by_deadline >, boost::multi_index::member< ScheduledCallback, Clock::time_point, &ScheduledCallback::deadline > >
 
using scope_index = boost::multi_index::hashed_non_unique< boost::multi_index::tag< by_scope >, boost::multi_index::member< ScheduledCallback, const void *, &ScheduledCallback::scope > >
 
using queue_type = boost::multi_index_container< ScheduledCallback, boost::multi_index::indexed_by< time_index, scope_index > >
 

Private Member Functions

void trigger ()
 

Private Attributes

Clock::time_point m_now
 
queue_type m_queue
 

Detailed Description

ManualRuntime is a manually triggered Runtime implementation. Ensure that time progress is triggered monotonically!

Definition at line 17 of file manual_runtime.hpp.

Member Typedef Documentation

◆ Callback

using vanetza::Runtime::Callback = std::function<void(Clock::time_point)>
inherited

Definition at line 18 of file runtime.hpp.

◆ queue_type

using vanetza::ManualRuntime::queue_type = boost::multi_index_container<ScheduledCallback, boost::multi_index::indexed_by<time_index, scope_index> >
private

Definition at line 90 of file manual_runtime.hpp.

◆ scope_index

using vanetza::ManualRuntime::scope_index = boost::multi_index::hashed_non_unique< boost::multi_index::tag<by_scope>, boost::multi_index::member<ScheduledCallback, const void*, &ScheduledCallback::scope> >
private

Definition at line 87 of file manual_runtime.hpp.

◆ time_index

using vanetza::ManualRuntime::time_index = boost::multi_index::ordered_non_unique< boost::multi_index::tag<by_deadline>, boost::multi_index::member<ScheduledCallback, Clock::time_point, &ScheduledCallback::deadline> >
private

Definition at line 83 of file manual_runtime.hpp.

Constructor & Destructor Documentation

◆ ManualRuntime()

vanetza::ManualRuntime::ManualRuntime ( Clock::time_point  init)
explicit

Create runtime

Parameters
initinitialization value of internal clock

Definition at line 7 of file manual_runtime.cpp.

Member Function Documentation

◆ cancel()

void vanetza::ManualRuntime::cancel ( const void *  scope)
overridevirtual

Cancel all scheduled invocations assigned to certain scope

Parameters
scopeany pointer used as scope at scheduling (nullptr has no effect)

Implements vanetza::Runtime.

Definition at line 21 of file manual_runtime.cpp.

◆ next()

Clock::time_point vanetza::ManualRuntime::next ( ) const

Get time point of next scheduled event

Note
time point might belong to an expired event, i.e. next() < now()
Returns
time point of next event or time_point::max if none

Definition at line 29 of file manual_runtime.cpp.

◆ now()

Clock::time_point vanetza::ManualRuntime::now ( ) const
overridevirtual

Get current time

Returns
current time

Implements vanetza::Runtime.

Definition at line 38 of file manual_runtime.cpp.

◆ reset()

void vanetza::ManualRuntime::reset ( Clock::time_point  tp)

Reset runtime

Drops all scheduled callbacks and resets internal clock

Parameters
tpnew time point

Definition at line 74 of file manual_runtime.cpp.

◆ schedule() [1/2]

void vanetza::ManualRuntime::schedule ( Clock::duration  d,
const Callback &  cb,
const void *  scope = nullptr 
)
overridevirtual

Schedule callback for later invocation

Parameters
dduration from now until callback invocation
cbcallback
scopeassociated scope pointer (used only for identification)

Implements vanetza::Runtime.

Definition at line 16 of file manual_runtime.cpp.

◆ schedule() [2/2]

void vanetza::ManualRuntime::schedule ( Clock::time_point  tp,
const Callback &  cb,
const void *  scope = nullptr 
)
overridevirtual

Schedule callback for later invocation

Parameters
tpinvoke callback at this time point
cbcallback
scopeassociated scope pointer (used only for identification)

Implements vanetza::Runtime.

Definition at line 11 of file manual_runtime.cpp.

◆ trigger() [1/3]

void vanetza::ManualRuntime::trigger ( )
private

Definition at line 57 of file manual_runtime.cpp.

◆ trigger() [2/3]

void vanetza::ManualRuntime::trigger ( Clock::duration  d)

Trigger relative time progress

All expired callbacks will be invoked

Parameters
dadvance time by this duration

Definition at line 51 of file manual_runtime.cpp.

◆ trigger() [3/3]

void vanetza::ManualRuntime::trigger ( Clock::time_point  tp)

Trigger absolute time progress

All expired callbacks will be invoked

Parameters
tpnew time point, has to be greater than now

Definition at line 43 of file manual_runtime.cpp.

Member Data Documentation

◆ m_now

Clock::time_point vanetza::ManualRuntime::m_now
private

Definition at line 95 of file manual_runtime.hpp.

◆ m_queue

queue_type vanetza::ManualRuntime::m_queue
private

Definition at line 96 of file manual_runtime.hpp.


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