Corium 1.1.0
High-Performance Zero-Heap C++20 MPSC Application Runtime
Loading...
Searching...
No Matches
corium::BasicRuntime< EventVariant, QueuePolicy, SignalPolicy, StoragePolicy, OverflowPolicy, TimerStoragePolicy, ProfilerPolicy > Class Template Reference

Corium Application Runtime managing MPSC event loops and static policy execution. Zero dynamic heap allocations, zero RTTI. More...

#include <Runtime.hpp>

+ Collaboration diagram for corium::BasicRuntime< EventVariant, QueuePolicy, SignalPolicy, StoragePolicy, OverflowPolicy, TimerStoragePolicy, ProfilerPolicy >:

Public Types

using ClockPolicyType = typename internal::get_timer_clock_policy< TimerStoragePolicy >::type
 
using EventBusType = BasicEventBus< EventVariant, QueuePolicy, SignalPolicy, StoragePolicy, OverflowPolicy, ProfilerPolicy >
 
using EventType = EventVariant
 
using EventVariantType = EventVariant
 
using ProfilerPolicyType = ProfilerPolicy
 
enum class  State : uint8_t {
  Created , Initializing , Running , Stopping ,
  Terminated
}
 
using TimerSchedulerType = TimerScheduler< EventVariant, TimerStoragePolicy::max_timers, ClockPolicyType >
 

Public Member Functions

 BasicRuntime ()
 
 BasicRuntime (const BasicRuntime &)=delete
 
bool cancelTimer (TimerId id) noexcept
 Cancel an active timer handle.
 
void detachApplication () noexcept
 Detach application to prevent dangling callbacks on shutdown.
 
std::size_t drain ()
 Drain and dispatch all currently enqueued events immediately.
 
EventSinkT< EventVariant > eventSink () noexcept
 Access event sink handle.
 
template<typename Derived , typename AppEvents = EventVariant, std::size_t MaxServices = 8>
void initialize (corium::Application< Derived, AppEvents, MaxServices > &application)
 Initialize runtime with target application using static CRTP dispatch.
 
BasicRuntimeoperator= (const BasicRuntime &)=delete
 
const OverflowPolicy & overflowPolicy () const noexcept
 Access const reference to overflow policy.
 
OverflowPolicy & overflowPolicy () noexcept
 Access reference to overflow policy.
 
const ProfilerPolicyTypeprofiler () const noexcept
 Access const reference to profiler policy.
 
ProfilerPolicyTypeprofiler () noexcept
 Access reference to profiler policy.
 
void pump ()
 Pump all pending events in the queue until empty.
 
void pump (std::size_t maxEvents)
 Pump up to maxEvents pending events from the queue.
 
std::size_t pumpBatch (std::size_t batchSize=16, std::size_t maxTotal=(std::numeric_limits< std::size_t >::max)())
 Pump events in consecutive batches to maximize CPU cache locality.
 
bool quitRequested () const noexcept
 Check if runtime quit has been requested.
 
void requestQuit () noexcept
 Request runtime quit.
 
template<typename Rep , typename Period >
TimerId scheduleDelayed (EventVariant event, const std::chrono::duration< Rep, Period > &delay, EventPriority priority=EventPriority::Normal)
 Schedule a single-shot delayed event with std::chrono duration.
 
template<typename DurationType >
requires (!std::is_same_v<DurationType, std::chrono::microseconds> && !std::is_same_v<DurationType, std::chrono::milliseconds>)
TimerId scheduleDelayed (EventVariant event, DurationType delay, EventPriority priority=EventPriority::Normal)
 Schedule a single-shot delayed event with native clock duration.
 
template<typename Rep , typename Period >
TimerId schedulePeriodic (EventVariant event, const std::chrono::duration< Rep, Period > &interval, EventPriority priority=EventPriority::Normal)
 Schedule a recurring periodic event with std::chrono duration.
 
template<typename DurationType >
requires (!std::is_same_v<DurationType, std::chrono::microseconds> && !std::is_same_v<DurationType, std::chrono::milliseconds>)
TimerId schedulePeriodic (EventVariant event, DurationType interval, EventPriority priority=EventPriority::Normal)
 Schedule a recurring periodic event with native clock duration.
 
void setOnQueueNonEmpty (StaticCallback callback)
 Set static callback triggered when event queue transitions from empty to non-empty (0 -> 1).
 
void shutdown () noexcept
 Stop runtime cleanly.
 
const SignalPolicy & signalPolicy () const noexcept
 Access const reference to signal policy.
 
SignalPolicy & signalPolicy () noexcept
 Access reference to signal policy.
 
State state () const noexcept
 Access current lifecycle state of the runtime.
 
const TimerSchedulerTypetimerScheduler () const noexcept
 Access const reference to timer scheduler.
 
TimerSchedulerTypetimerScheduler () noexcept
 Access reference to timer scheduler.
 
template<typename Rep , typename Period >
std::size_t waitAndPump (const std::chrono::duration< Rep, Period > &timeout)
 Wait for at least one event to become available (or until timeout), then pump all pending events.
 
 ~BasicRuntime ()
 

Detailed Description

template<typename EventVariant = DefaultEvents, typename QueuePolicy = BoundedMpscQueuePolicy<EventVariant, 1024>, typename SignalPolicy = NoSignalPolicy, typename StoragePolicy = DefaultStoragePolicy, typename OverflowPolicy = DropNewestOverflowPolicy, typename TimerStoragePolicy = DefaultTimerStoragePolicy, typename ProfilerPolicy = profiler::NullProfiler>
class corium::BasicRuntime< EventVariant, QueuePolicy, SignalPolicy, StoragePolicy, OverflowPolicy, TimerStoragePolicy, ProfilerPolicy >

Corium Application Runtime managing MPSC event loops and static policy execution. Zero dynamic heap allocations, zero RTTI.

Template Parameters
EventVariantThe variant type list of supported events.
QueuePolicyPolicy governing event queueing (Lock-free MPSC).
SignalPolicyPolicy governing notification (NoSignalPolicy default).
StoragePolicyPolicy governing handler capacity and delegate inline storage size.
OverflowPolicyPolicy governing queue overflow handling (DropNewestOverflowPolicy default).
TimerStoragePolicyPolicy governing maximum concurrent timers (DefaultTimerStoragePolicy default: 64).

Member Typedef Documentation

◆ ClockPolicyType

template<typename EventVariant = DefaultEvents, typename QueuePolicy = BoundedMpscQueuePolicy<EventVariant, 1024>, typename SignalPolicy = NoSignalPolicy, typename StoragePolicy = DefaultStoragePolicy, typename OverflowPolicy = DropNewestOverflowPolicy, typename TimerStoragePolicy = DefaultTimerStoragePolicy, typename ProfilerPolicy = profiler::NullProfiler>
using corium::BasicRuntime< EventVariant, QueuePolicy, SignalPolicy, StoragePolicy, OverflowPolicy, TimerStoragePolicy, ProfilerPolicy >::ClockPolicyType = typename internal::get_timer_clock_policy<TimerStoragePolicy>::type

◆ EventBusType

template<typename EventVariant = DefaultEvents, typename QueuePolicy = BoundedMpscQueuePolicy<EventVariant, 1024>, typename SignalPolicy = NoSignalPolicy, typename StoragePolicy = DefaultStoragePolicy, typename OverflowPolicy = DropNewestOverflowPolicy, typename TimerStoragePolicy = DefaultTimerStoragePolicy, typename ProfilerPolicy = profiler::NullProfiler>
using corium::BasicRuntime< EventVariant, QueuePolicy, SignalPolicy, StoragePolicy, OverflowPolicy, TimerStoragePolicy, ProfilerPolicy >::EventBusType = BasicEventBus<EventVariant, QueuePolicy, SignalPolicy, StoragePolicy, OverflowPolicy, ProfilerPolicy>

◆ EventType

template<typename EventVariant = DefaultEvents, typename QueuePolicy = BoundedMpscQueuePolicy<EventVariant, 1024>, typename SignalPolicy = NoSignalPolicy, typename StoragePolicy = DefaultStoragePolicy, typename OverflowPolicy = DropNewestOverflowPolicy, typename TimerStoragePolicy = DefaultTimerStoragePolicy, typename ProfilerPolicy = profiler::NullProfiler>
using corium::BasicRuntime< EventVariant, QueuePolicy, SignalPolicy, StoragePolicy, OverflowPolicy, TimerStoragePolicy, ProfilerPolicy >::EventType = EventVariant

◆ EventVariantType

template<typename EventVariant = DefaultEvents, typename QueuePolicy = BoundedMpscQueuePolicy<EventVariant, 1024>, typename SignalPolicy = NoSignalPolicy, typename StoragePolicy = DefaultStoragePolicy, typename OverflowPolicy = DropNewestOverflowPolicy, typename TimerStoragePolicy = DefaultTimerStoragePolicy, typename ProfilerPolicy = profiler::NullProfiler>
using corium::BasicRuntime< EventVariant, QueuePolicy, SignalPolicy, StoragePolicy, OverflowPolicy, TimerStoragePolicy, ProfilerPolicy >::EventVariantType = EventVariant

◆ ProfilerPolicyType

template<typename EventVariant = DefaultEvents, typename QueuePolicy = BoundedMpscQueuePolicy<EventVariant, 1024>, typename SignalPolicy = NoSignalPolicy, typename StoragePolicy = DefaultStoragePolicy, typename OverflowPolicy = DropNewestOverflowPolicy, typename TimerStoragePolicy = DefaultTimerStoragePolicy, typename ProfilerPolicy = profiler::NullProfiler>
using corium::BasicRuntime< EventVariant, QueuePolicy, SignalPolicy, StoragePolicy, OverflowPolicy, TimerStoragePolicy, ProfilerPolicy >::ProfilerPolicyType = ProfilerPolicy

◆ TimerSchedulerType

template<typename EventVariant = DefaultEvents, typename QueuePolicy = BoundedMpscQueuePolicy<EventVariant, 1024>, typename SignalPolicy = NoSignalPolicy, typename StoragePolicy = DefaultStoragePolicy, typename OverflowPolicy = DropNewestOverflowPolicy, typename TimerStoragePolicy = DefaultTimerStoragePolicy, typename ProfilerPolicy = profiler::NullProfiler>
using corium::BasicRuntime< EventVariant, QueuePolicy, SignalPolicy, StoragePolicy, OverflowPolicy, TimerStoragePolicy, ProfilerPolicy >::TimerSchedulerType = TimerScheduler<EventVariant, TimerStoragePolicy::max_timers, ClockPolicyType>

Member Enumeration Documentation

◆ State

template<typename EventVariant = DefaultEvents, typename QueuePolicy = BoundedMpscQueuePolicy<EventVariant, 1024>, typename SignalPolicy = NoSignalPolicy, typename StoragePolicy = DefaultStoragePolicy, typename OverflowPolicy = DropNewestOverflowPolicy, typename TimerStoragePolicy = DefaultTimerStoragePolicy, typename ProfilerPolicy = profiler::NullProfiler>
enum class corium::BasicRuntime::State : uint8_t
strong
Enumerator
Created 
Initializing 
Running 
Stopping 
Terminated 

Constructor & Destructor Documentation

◆ BasicRuntime() [1/2]

template<typename EventVariant = DefaultEvents, typename QueuePolicy = BoundedMpscQueuePolicy<EventVariant, 1024>, typename SignalPolicy = NoSignalPolicy, typename StoragePolicy = DefaultStoragePolicy, typename OverflowPolicy = DropNewestOverflowPolicy, typename TimerStoragePolicy = DefaultTimerStoragePolicy, typename ProfilerPolicy = profiler::NullProfiler>
corium::BasicRuntime< EventVariant, QueuePolicy, SignalPolicy, StoragePolicy, OverflowPolicy, TimerStoragePolicy, ProfilerPolicy >::BasicRuntime ( )
inline

◆ ~BasicRuntime()

template<typename EventVariant = DefaultEvents, typename QueuePolicy = BoundedMpscQueuePolicy<EventVariant, 1024>, typename SignalPolicy = NoSignalPolicy, typename StoragePolicy = DefaultStoragePolicy, typename OverflowPolicy = DropNewestOverflowPolicy, typename TimerStoragePolicy = DefaultTimerStoragePolicy, typename ProfilerPolicy = profiler::NullProfiler>
corium::BasicRuntime< EventVariant, QueuePolicy, SignalPolicy, StoragePolicy, OverflowPolicy, TimerStoragePolicy, ProfilerPolicy >::~BasicRuntime ( )
inline
+ Here is the call graph for this function:

◆ BasicRuntime() [2/2]

template<typename EventVariant = DefaultEvents, typename QueuePolicy = BoundedMpscQueuePolicy<EventVariant, 1024>, typename SignalPolicy = NoSignalPolicy, typename StoragePolicy = DefaultStoragePolicy, typename OverflowPolicy = DropNewestOverflowPolicy, typename TimerStoragePolicy = DefaultTimerStoragePolicy, typename ProfilerPolicy = profiler::NullProfiler>
corium::BasicRuntime< EventVariant, QueuePolicy, SignalPolicy, StoragePolicy, OverflowPolicy, TimerStoragePolicy, ProfilerPolicy >::BasicRuntime ( const BasicRuntime< EventVariant, QueuePolicy, SignalPolicy, StoragePolicy, OverflowPolicy, TimerStoragePolicy, ProfilerPolicy > &  )
delete

Member Function Documentation

◆ cancelTimer()

template<typename EventVariant = DefaultEvents, typename QueuePolicy = BoundedMpscQueuePolicy<EventVariant, 1024>, typename SignalPolicy = NoSignalPolicy, typename StoragePolicy = DefaultStoragePolicy, typename OverflowPolicy = DropNewestOverflowPolicy, typename TimerStoragePolicy = DefaultTimerStoragePolicy, typename ProfilerPolicy = profiler::NullProfiler>
bool corium::BasicRuntime< EventVariant, QueuePolicy, SignalPolicy, StoragePolicy, OverflowPolicy, TimerStoragePolicy, ProfilerPolicy >::cancelTimer ( TimerId  id)
inlinenoexcept

Cancel an active timer handle.

+ Here is the call graph for this function:

◆ detachApplication()

template<typename EventVariant = DefaultEvents, typename QueuePolicy = BoundedMpscQueuePolicy<EventVariant, 1024>, typename SignalPolicy = NoSignalPolicy, typename StoragePolicy = DefaultStoragePolicy, typename OverflowPolicy = DropNewestOverflowPolicy, typename TimerStoragePolicy = DefaultTimerStoragePolicy, typename ProfilerPolicy = profiler::NullProfiler>
void corium::BasicRuntime< EventVariant, QueuePolicy, SignalPolicy, StoragePolicy, OverflowPolicy, TimerStoragePolicy, ProfilerPolicy >::detachApplication ( )
inlinenoexcept

Detach application to prevent dangling callbacks on shutdown.

+ Here is the caller graph for this function:

◆ drain()

template<typename EventVariant = DefaultEvents, typename QueuePolicy = BoundedMpscQueuePolicy<EventVariant, 1024>, typename SignalPolicy = NoSignalPolicy, typename StoragePolicy = DefaultStoragePolicy, typename OverflowPolicy = DropNewestOverflowPolicy, typename TimerStoragePolicy = DefaultTimerStoragePolicy, typename ProfilerPolicy = profiler::NullProfiler>
std::size_t corium::BasicRuntime< EventVariant, QueuePolicy, SignalPolicy, StoragePolicy, OverflowPolicy, TimerStoragePolicy, ProfilerPolicy >::drain ( )
inline

Drain and dispatch all currently enqueued events immediately.

Returns
Total number of events processed.
+ Here is the call graph for this function:

◆ eventSink()

template<typename EventVariant = DefaultEvents, typename QueuePolicy = BoundedMpscQueuePolicy<EventVariant, 1024>, typename SignalPolicy = NoSignalPolicy, typename StoragePolicy = DefaultStoragePolicy, typename OverflowPolicy = DropNewestOverflowPolicy, typename TimerStoragePolicy = DefaultTimerStoragePolicy, typename ProfilerPolicy = profiler::NullProfiler>
EventSinkT< EventVariant > corium::BasicRuntime< EventVariant, QueuePolicy, SignalPolicy, StoragePolicy, OverflowPolicy, TimerStoragePolicy, ProfilerPolicy >::eventSink ( )
inlinenoexcept

Access event sink handle.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ initialize()

template<typename EventVariant = DefaultEvents, typename QueuePolicy = BoundedMpscQueuePolicy<EventVariant, 1024>, typename SignalPolicy = NoSignalPolicy, typename StoragePolicy = DefaultStoragePolicy, typename OverflowPolicy = DropNewestOverflowPolicy, typename TimerStoragePolicy = DefaultTimerStoragePolicy, typename ProfilerPolicy = profiler::NullProfiler>
template<typename Derived , typename AppEvents = EventVariant, std::size_t MaxServices = 8>
void corium::BasicRuntime< EventVariant, QueuePolicy, SignalPolicy, StoragePolicy, OverflowPolicy, TimerStoragePolicy, ProfilerPolicy >::initialize ( corium::Application< Derived, AppEvents, MaxServices > &  application)
inline

Initialize runtime with target application using static CRTP dispatch.

Template Parameters
DerivedApplication core type deriving from Application<Derived, AppEvents, MaxServices>.
AppEventsEvent variant or event bus type defined on the application.
MaxServicesNumber of services the application can register (deduced automatically).
Parameters
applicationApplication instance to initialize.
+ Here is the call graph for this function:

◆ operator=()

template<typename EventVariant = DefaultEvents, typename QueuePolicy = BoundedMpscQueuePolicy<EventVariant, 1024>, typename SignalPolicy = NoSignalPolicy, typename StoragePolicy = DefaultStoragePolicy, typename OverflowPolicy = DropNewestOverflowPolicy, typename TimerStoragePolicy = DefaultTimerStoragePolicy, typename ProfilerPolicy = profiler::NullProfiler>
BasicRuntime & corium::BasicRuntime< EventVariant, QueuePolicy, SignalPolicy, StoragePolicy, OverflowPolicy, TimerStoragePolicy, ProfilerPolicy >::operator= ( const BasicRuntime< EventVariant, QueuePolicy, SignalPolicy, StoragePolicy, OverflowPolicy, TimerStoragePolicy, ProfilerPolicy > &  )
delete

◆ overflowPolicy() [1/2]

template<typename EventVariant = DefaultEvents, typename QueuePolicy = BoundedMpscQueuePolicy<EventVariant, 1024>, typename SignalPolicy = NoSignalPolicy, typename StoragePolicy = DefaultStoragePolicy, typename OverflowPolicy = DropNewestOverflowPolicy, typename TimerStoragePolicy = DefaultTimerStoragePolicy, typename ProfilerPolicy = profiler::NullProfiler>
const OverflowPolicy & corium::BasicRuntime< EventVariant, QueuePolicy, SignalPolicy, StoragePolicy, OverflowPolicy, TimerStoragePolicy, ProfilerPolicy >::overflowPolicy ( ) const
inlinenoexcept

Access const reference to overflow policy.

+ Here is the call graph for this function:

◆ overflowPolicy() [2/2]

template<typename EventVariant = DefaultEvents, typename QueuePolicy = BoundedMpscQueuePolicy<EventVariant, 1024>, typename SignalPolicy = NoSignalPolicy, typename StoragePolicy = DefaultStoragePolicy, typename OverflowPolicy = DropNewestOverflowPolicy, typename TimerStoragePolicy = DefaultTimerStoragePolicy, typename ProfilerPolicy = profiler::NullProfiler>
OverflowPolicy & corium::BasicRuntime< EventVariant, QueuePolicy, SignalPolicy, StoragePolicy, OverflowPolicy, TimerStoragePolicy, ProfilerPolicy >::overflowPolicy ( )
inlinenoexcept

Access reference to overflow policy.

+ Here is the call graph for this function:

◆ profiler() [1/2]

template<typename EventVariant = DefaultEvents, typename QueuePolicy = BoundedMpscQueuePolicy<EventVariant, 1024>, typename SignalPolicy = NoSignalPolicy, typename StoragePolicy = DefaultStoragePolicy, typename OverflowPolicy = DropNewestOverflowPolicy, typename TimerStoragePolicy = DefaultTimerStoragePolicy, typename ProfilerPolicy = profiler::NullProfiler>
const ProfilerPolicyType & corium::BasicRuntime< EventVariant, QueuePolicy, SignalPolicy, StoragePolicy, OverflowPolicy, TimerStoragePolicy, ProfilerPolicy >::profiler ( ) const
inlinenoexcept

Access const reference to profiler policy.

+ Here is the call graph for this function:

◆ profiler() [2/2]

template<typename EventVariant = DefaultEvents, typename QueuePolicy = BoundedMpscQueuePolicy<EventVariant, 1024>, typename SignalPolicy = NoSignalPolicy, typename StoragePolicy = DefaultStoragePolicy, typename OverflowPolicy = DropNewestOverflowPolicy, typename TimerStoragePolicy = DefaultTimerStoragePolicy, typename ProfilerPolicy = profiler::NullProfiler>
ProfilerPolicyType & corium::BasicRuntime< EventVariant, QueuePolicy, SignalPolicy, StoragePolicy, OverflowPolicy, TimerStoragePolicy, ProfilerPolicy >::profiler ( )
inlinenoexcept

Access reference to profiler policy.

+ Here is the call graph for this function:

◆ pump() [1/2]

template<typename EventVariant = DefaultEvents, typename QueuePolicy = BoundedMpscQueuePolicy<EventVariant, 1024>, typename SignalPolicy = NoSignalPolicy, typename StoragePolicy = DefaultStoragePolicy, typename OverflowPolicy = DropNewestOverflowPolicy, typename TimerStoragePolicy = DefaultTimerStoragePolicy, typename ProfilerPolicy = profiler::NullProfiler>
void corium::BasicRuntime< EventVariant, QueuePolicy, SignalPolicy, StoragePolicy, OverflowPolicy, TimerStoragePolicy, ProfilerPolicy >::pump ( )
inline

Pump all pending events in the queue until empty.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ pump() [2/2]

template<typename EventVariant = DefaultEvents, typename QueuePolicy = BoundedMpscQueuePolicy<EventVariant, 1024>, typename SignalPolicy = NoSignalPolicy, typename StoragePolicy = DefaultStoragePolicy, typename OverflowPolicy = DropNewestOverflowPolicy, typename TimerStoragePolicy = DefaultTimerStoragePolicy, typename ProfilerPolicy = profiler::NullProfiler>
void corium::BasicRuntime< EventVariant, QueuePolicy, SignalPolicy, StoragePolicy, OverflowPolicy, TimerStoragePolicy, ProfilerPolicy >::pump ( std::size_t  maxEvents)
inline

Pump up to maxEvents pending events from the queue.

Parameters
maxEventsMaximum number of events to process in this call.
+ Here is the call graph for this function:

◆ pumpBatch()

template<typename EventVariant = DefaultEvents, typename QueuePolicy = BoundedMpscQueuePolicy<EventVariant, 1024>, typename SignalPolicy = NoSignalPolicy, typename StoragePolicy = DefaultStoragePolicy, typename OverflowPolicy = DropNewestOverflowPolicy, typename TimerStoragePolicy = DefaultTimerStoragePolicy, typename ProfilerPolicy = profiler::NullProfiler>
std::size_t corium::BasicRuntime< EventVariant, QueuePolicy, SignalPolicy, StoragePolicy, OverflowPolicy, TimerStoragePolicy, ProfilerPolicy >::pumpBatch ( std::size_t  batchSize = 16,
std::size_t  maxTotal = (std::numeric_limits<std::size_t>::max)() 
)
inline

Pump events in consecutive batches to maximize CPU cache locality.

Parameters
batchSizeNumber of events to process per batch (default: 16).
maxTotalMaximum total number of events to process.
Returns
Total number of events processed.
+ Here is the call graph for this function:

◆ quitRequested()

template<typename EventVariant = DefaultEvents, typename QueuePolicy = BoundedMpscQueuePolicy<EventVariant, 1024>, typename SignalPolicy = NoSignalPolicy, typename StoragePolicy = DefaultStoragePolicy, typename OverflowPolicy = DropNewestOverflowPolicy, typename TimerStoragePolicy = DefaultTimerStoragePolicy, typename ProfilerPolicy = profiler::NullProfiler>
bool corium::BasicRuntime< EventVariant, QueuePolicy, SignalPolicy, StoragePolicy, OverflowPolicy, TimerStoragePolicy, ProfilerPolicy >::quitRequested ( ) const
inlinenoexcept

Check if runtime quit has been requested.

◆ requestQuit()

template<typename EventVariant = DefaultEvents, typename QueuePolicy = BoundedMpscQueuePolicy<EventVariant, 1024>, typename SignalPolicy = NoSignalPolicy, typename StoragePolicy = DefaultStoragePolicy, typename OverflowPolicy = DropNewestOverflowPolicy, typename TimerStoragePolicy = DefaultTimerStoragePolicy, typename ProfilerPolicy = profiler::NullProfiler>
void corium::BasicRuntime< EventVariant, QueuePolicy, SignalPolicy, StoragePolicy, OverflowPolicy, TimerStoragePolicy, ProfilerPolicy >::requestQuit ( )
inlinenoexcept

Request runtime quit.

◆ scheduleDelayed() [1/2]

template<typename EventVariant = DefaultEvents, typename QueuePolicy = BoundedMpscQueuePolicy<EventVariant, 1024>, typename SignalPolicy = NoSignalPolicy, typename StoragePolicy = DefaultStoragePolicy, typename OverflowPolicy = DropNewestOverflowPolicy, typename TimerStoragePolicy = DefaultTimerStoragePolicy, typename ProfilerPolicy = profiler::NullProfiler>
template<typename Rep , typename Period >
TimerId corium::BasicRuntime< EventVariant, QueuePolicy, SignalPolicy, StoragePolicy, OverflowPolicy, TimerStoragePolicy, ProfilerPolicy >::scheduleDelayed ( EventVariant  event,
const std::chrono::duration< Rep, Period > &  delay,
EventPriority  priority = EventPriority::Normal 
)
inline

Schedule a single-shot delayed event with std::chrono duration.

+ Here is the call graph for this function:

◆ scheduleDelayed() [2/2]

template<typename EventVariant = DefaultEvents, typename QueuePolicy = BoundedMpscQueuePolicy<EventVariant, 1024>, typename SignalPolicy = NoSignalPolicy, typename StoragePolicy = DefaultStoragePolicy, typename OverflowPolicy = DropNewestOverflowPolicy, typename TimerStoragePolicy = DefaultTimerStoragePolicy, typename ProfilerPolicy = profiler::NullProfiler>
template<typename DurationType >
requires (!std::is_same_v<DurationType, std::chrono::microseconds> && !std::is_same_v<DurationType, std::chrono::milliseconds>)
TimerId corium::BasicRuntime< EventVariant, QueuePolicy, SignalPolicy, StoragePolicy, OverflowPolicy, TimerStoragePolicy, ProfilerPolicy >::scheduleDelayed ( EventVariant  event,
DurationType  delay,
EventPriority  priority = EventPriority::Normal 
)
inline

Schedule a single-shot delayed event with native clock duration.

+ Here is the call graph for this function:

◆ schedulePeriodic() [1/2]

template<typename EventVariant = DefaultEvents, typename QueuePolicy = BoundedMpscQueuePolicy<EventVariant, 1024>, typename SignalPolicy = NoSignalPolicy, typename StoragePolicy = DefaultStoragePolicy, typename OverflowPolicy = DropNewestOverflowPolicy, typename TimerStoragePolicy = DefaultTimerStoragePolicy, typename ProfilerPolicy = profiler::NullProfiler>
template<typename Rep , typename Period >
TimerId corium::BasicRuntime< EventVariant, QueuePolicy, SignalPolicy, StoragePolicy, OverflowPolicy, TimerStoragePolicy, ProfilerPolicy >::schedulePeriodic ( EventVariant  event,
const std::chrono::duration< Rep, Period > &  interval,
EventPriority  priority = EventPriority::Normal 
)
inline

Schedule a recurring periodic event with std::chrono duration.

+ Here is the call graph for this function:

◆ schedulePeriodic() [2/2]

template<typename EventVariant = DefaultEvents, typename QueuePolicy = BoundedMpscQueuePolicy<EventVariant, 1024>, typename SignalPolicy = NoSignalPolicy, typename StoragePolicy = DefaultStoragePolicy, typename OverflowPolicy = DropNewestOverflowPolicy, typename TimerStoragePolicy = DefaultTimerStoragePolicy, typename ProfilerPolicy = profiler::NullProfiler>
template<typename DurationType >
requires (!std::is_same_v<DurationType, std::chrono::microseconds> && !std::is_same_v<DurationType, std::chrono::milliseconds>)
TimerId corium::BasicRuntime< EventVariant, QueuePolicy, SignalPolicy, StoragePolicy, OverflowPolicy, TimerStoragePolicy, ProfilerPolicy >::schedulePeriodic ( EventVariant  event,
DurationType  interval,
EventPriority  priority = EventPriority::Normal 
)
inline

Schedule a recurring periodic event with native clock duration.

+ Here is the call graph for this function:

◆ setOnQueueNonEmpty()

template<typename EventVariant = DefaultEvents, typename QueuePolicy = BoundedMpscQueuePolicy<EventVariant, 1024>, typename SignalPolicy = NoSignalPolicy, typename StoragePolicy = DefaultStoragePolicy, typename OverflowPolicy = DropNewestOverflowPolicy, typename TimerStoragePolicy = DefaultTimerStoragePolicy, typename ProfilerPolicy = profiler::NullProfiler>
void corium::BasicRuntime< EventVariant, QueuePolicy, SignalPolicy, StoragePolicy, OverflowPolicy, TimerStoragePolicy, ProfilerPolicy >::setOnQueueNonEmpty ( StaticCallback  callback)
inline

Set static callback triggered when event queue transitions from empty to non-empty (0 -> 1).

+ Here is the call graph for this function:

◆ shutdown()

template<typename EventVariant = DefaultEvents, typename QueuePolicy = BoundedMpscQueuePolicy<EventVariant, 1024>, typename SignalPolicy = NoSignalPolicy, typename StoragePolicy = DefaultStoragePolicy, typename OverflowPolicy = DropNewestOverflowPolicy, typename TimerStoragePolicy = DefaultTimerStoragePolicy, typename ProfilerPolicy = profiler::NullProfiler>
void corium::BasicRuntime< EventVariant, QueuePolicy, SignalPolicy, StoragePolicy, OverflowPolicy, TimerStoragePolicy, ProfilerPolicy >::shutdown ( )
inlinenoexcept

Stop runtime cleanly.

+ Here is the caller graph for this function:

◆ signalPolicy() [1/2]

template<typename EventVariant = DefaultEvents, typename QueuePolicy = BoundedMpscQueuePolicy<EventVariant, 1024>, typename SignalPolicy = NoSignalPolicy, typename StoragePolicy = DefaultStoragePolicy, typename OverflowPolicy = DropNewestOverflowPolicy, typename TimerStoragePolicy = DefaultTimerStoragePolicy, typename ProfilerPolicy = profiler::NullProfiler>
const SignalPolicy & corium::BasicRuntime< EventVariant, QueuePolicy, SignalPolicy, StoragePolicy, OverflowPolicy, TimerStoragePolicy, ProfilerPolicy >::signalPolicy ( ) const
inlinenoexcept

Access const reference to signal policy.

+ Here is the call graph for this function:

◆ signalPolicy() [2/2]

template<typename EventVariant = DefaultEvents, typename QueuePolicy = BoundedMpscQueuePolicy<EventVariant, 1024>, typename SignalPolicy = NoSignalPolicy, typename StoragePolicy = DefaultStoragePolicy, typename OverflowPolicy = DropNewestOverflowPolicy, typename TimerStoragePolicy = DefaultTimerStoragePolicy, typename ProfilerPolicy = profiler::NullProfiler>
SignalPolicy & corium::BasicRuntime< EventVariant, QueuePolicy, SignalPolicy, StoragePolicy, OverflowPolicy, TimerStoragePolicy, ProfilerPolicy >::signalPolicy ( )
inlinenoexcept

Access reference to signal policy.

+ Here is the call graph for this function:

◆ state()

template<typename EventVariant = DefaultEvents, typename QueuePolicy = BoundedMpscQueuePolicy<EventVariant, 1024>, typename SignalPolicy = NoSignalPolicy, typename StoragePolicy = DefaultStoragePolicy, typename OverflowPolicy = DropNewestOverflowPolicy, typename TimerStoragePolicy = DefaultTimerStoragePolicy, typename ProfilerPolicy = profiler::NullProfiler>
State corium::BasicRuntime< EventVariant, QueuePolicy, SignalPolicy, StoragePolicy, OverflowPolicy, TimerStoragePolicy, ProfilerPolicy >::state ( ) const
inlinenoexcept

Access current lifecycle state of the runtime.

◆ timerScheduler() [1/2]

template<typename EventVariant = DefaultEvents, typename QueuePolicy = BoundedMpscQueuePolicy<EventVariant, 1024>, typename SignalPolicy = NoSignalPolicy, typename StoragePolicy = DefaultStoragePolicy, typename OverflowPolicy = DropNewestOverflowPolicy, typename TimerStoragePolicy = DefaultTimerStoragePolicy, typename ProfilerPolicy = profiler::NullProfiler>
const TimerSchedulerType & corium::BasicRuntime< EventVariant, QueuePolicy, SignalPolicy, StoragePolicy, OverflowPolicy, TimerStoragePolicy, ProfilerPolicy >::timerScheduler ( ) const
inlinenoexcept

Access const reference to timer scheduler.

◆ timerScheduler() [2/2]

template<typename EventVariant = DefaultEvents, typename QueuePolicy = BoundedMpscQueuePolicy<EventVariant, 1024>, typename SignalPolicy = NoSignalPolicy, typename StoragePolicy = DefaultStoragePolicy, typename OverflowPolicy = DropNewestOverflowPolicy, typename TimerStoragePolicy = DefaultTimerStoragePolicy, typename ProfilerPolicy = profiler::NullProfiler>
TimerSchedulerType & corium::BasicRuntime< EventVariant, QueuePolicy, SignalPolicy, StoragePolicy, OverflowPolicy, TimerStoragePolicy, ProfilerPolicy >::timerScheduler ( )
inlinenoexcept

Access reference to timer scheduler.

◆ waitAndPump()

template<typename EventVariant = DefaultEvents, typename QueuePolicy = BoundedMpscQueuePolicy<EventVariant, 1024>, typename SignalPolicy = NoSignalPolicy, typename StoragePolicy = DefaultStoragePolicy, typename OverflowPolicy = DropNewestOverflowPolicy, typename TimerStoragePolicy = DefaultTimerStoragePolicy, typename ProfilerPolicy = profiler::NullProfiler>
template<typename Rep , typename Period >
std::size_t corium::BasicRuntime< EventVariant, QueuePolicy, SignalPolicy, StoragePolicy, OverflowPolicy, TimerStoragePolicy, ProfilerPolicy >::waitAndPump ( const std::chrono::duration< Rep, Period > &  timeout)
inline

Wait for at least one event to become available (or until timeout), then pump all pending events.

+ Here is the call graph for this function:

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