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

Primary template implementation for fluent compile-time Runtime construction. More...

#include <RuntimeBuilder.hpp>

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

Public Types

using Build = BasicRuntime< EventVariant, QueuePolicy, SignalPolicy, StoragePolicy, OverflowPolicy, TimerStoragePolicy, ProfilerPolicy >
 Complete builder configuration and return BasicRuntime type.
 
template<size_t Capacity>
using WithCapacity = BasicRuntimeBuilder< EventVariant, internal::rebind_queue_capacity_t< QueuePolicy, Capacity >, SignalPolicy, StoragePolicy, OverflowPolicy, TimerStoragePolicy, ProfilerPolicy >
 Specify custom queue capacity for bounded MPSC queue (preserves existing event variant).
 
template<typename NewClockPolicy >
using WithClockPolicy = BasicRuntimeBuilder< EventVariant, QueuePolicy, SignalPolicy, StoragePolicy, OverflowPolicy, FixedTimerStoragePolicy< TimerStoragePolicy::max_timers, NewClockPolicy >, ProfilerPolicy >
 Specify custom ClockPolicy (time source strategy).
 
template<typename NewEventVariant >
using WithEvents = BasicRuntimeBuilder< NewEventVariant, internal::rebind_queue_policy_t< QueuePolicy, NewEventVariant >, SignalPolicy, StoragePolicy, OverflowPolicy, TimerStoragePolicy, ProfilerPolicy >
 Specify custom event variant list type (preserves existing queue capacity/policy).
 
template<std::size_t BufferCapacity = 256>
using WithFlightRecorder = BasicRuntimeBuilder< EventVariant, QueuePolicy, SignalPolicy, StoragePolicy, OverflowPolicy, TimerStoragePolicy, profiler::FlightRecorderProfiler< BufferCapacity, internal::queue_capacity_of_v< QueuePolicy > > >
 Convenience helper: Configure FlightRecorder circular trace logger. The QueueCapacity of the internal timestamp ring buffer is automatically derived from the current QueuePolicy capacity, ensuring accurate per-event latency measurement.
 
template<size_t NewInlineSize>
using WithInlineSize = BasicRuntimeBuilder< EventVariant, QueuePolicy, SignalPolicy, FixedStoragePolicy< StoragePolicy::max_handlers_per_event, NewInlineSize >, OverflowPolicy, TimerStoragePolicy, ProfilerPolicy >
 Specify inline storage size for FastDelegate (rebinds StoragePolicy).
 
template<std::size_t BufferCapacity = 256>
using WithLatencyTracker = BasicRuntimeBuilder< EventVariant, QueuePolicy, SignalPolicy, StoragePolicy, OverflowPolicy, TimerStoragePolicy, profiler::LatencyTracker< internal::queue_capacity_of_v< QueuePolicy > > >
 Convenience helper: Configure real-time event latency statistics tracker. The QueueCapacity of the internal timestamp ring buffer is automatically derived from the current QueuePolicy capacity, ensuring accurate per-event latency measurement.
 
template<size_t NewMaxHandlers>
using WithMaxHandlersPerEvent = BasicRuntimeBuilder< EventVariant, QueuePolicy, SignalPolicy, FixedStoragePolicy< NewMaxHandlers, StoragePolicy::inline_storage_size >, OverflowPolicy, TimerStoragePolicy, ProfilerPolicy >
 Specify maximum handlers per event type (rebinds StoragePolicy).
 
template<size_t MaxTimers>
using WithMaxTimers = BasicRuntimeBuilder< EventVariant, QueuePolicy, SignalPolicy, StoragePolicy, OverflowPolicy, FixedTimerStoragePolicy< MaxTimers >, ProfilerPolicy >
 Specify maximum number of concurrent active timers.
 
template<typename NewOverflowPolicy >
using WithOverflowPolicy = BasicRuntimeBuilder< EventVariant, QueuePolicy, SignalPolicy, StoragePolicy, NewOverflowPolicy, TimerStoragePolicy, ProfilerPolicy >
 Specify custom OverflowPolicy.
 
template<size_t HighCapacity = 256, size_t NormalCapacity = 1024>
using WithPriorityQueue = BasicRuntimeBuilder< EventVariant, PriorityMpscQueuePolicy< EventVariant, HighCapacity, NormalCapacity >, SignalPolicy, StoragePolicy, OverflowPolicy, TimerStoragePolicy, ProfilerPolicy >
 Switch queue policy to PriorityMpscQueuePolicy with specified high and normal capacities.
 
template<typename NewProfilerPolicy >
using WithProfiler = BasicRuntimeBuilder< EventVariant, QueuePolicy, SignalPolicy, StoragePolicy, OverflowPolicy, TimerStoragePolicy, NewProfilerPolicy >
 Specify custom ProfilerPolicy strategy.
 
template<typename NewQueuePolicy >
using WithQueuePolicy = BasicRuntimeBuilder< EventVariant, NewQueuePolicy, SignalPolicy, StoragePolicy, OverflowPolicy, TimerStoragePolicy, ProfilerPolicy >
 Specify custom QueuePolicy.
 
template<typename NewSignalPolicy >
using WithSignalPolicy = BasicRuntimeBuilder< EventVariant, QueuePolicy, NewSignalPolicy, StoragePolicy, OverflowPolicy, TimerStoragePolicy, ProfilerPolicy >
 Specify custom SignalPolicy.
 
template<typename NewStoragePolicy >
using WithStoragePolicy = BasicRuntimeBuilder< EventVariant, QueuePolicy, SignalPolicy, NewStoragePolicy, OverflowPolicy, TimerStoragePolicy, ProfilerPolicy >
 Specify custom StoragePolicy.
 
template<typename NewTimerStoragePolicy >
using WithTimerStoragePolicy = BasicRuntimeBuilder< EventVariant, QueuePolicy, SignalPolicy, StoragePolicy, OverflowPolicy, NewTimerStoragePolicy, ProfilerPolicy >
 Specify custom TimerStoragePolicy.
 

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>
struct corium::BasicRuntimeBuilder< EventVariant, QueuePolicy, SignalPolicy, StoragePolicy, OverflowPolicy, TimerStoragePolicy, ProfilerPolicy >

Primary template implementation for fluent compile-time Runtime construction.

Member Typedef Documentation

◆ Build

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::BasicRuntimeBuilder< EventVariant, QueuePolicy, SignalPolicy, StoragePolicy, OverflowPolicy, TimerStoragePolicy, ProfilerPolicy >::Build = BasicRuntime<EventVariant, QueuePolicy, SignalPolicy, StoragePolicy, OverflowPolicy, TimerStoragePolicy, ProfilerPolicy>

Complete builder configuration and return BasicRuntime type.

◆ WithCapacity

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<size_t Capacity>
using corium::BasicRuntimeBuilder< EventVariant, QueuePolicy, SignalPolicy, StoragePolicy, OverflowPolicy, TimerStoragePolicy, ProfilerPolicy >::WithCapacity = BasicRuntimeBuilder< EventVariant, internal::rebind_queue_capacity_t<QueuePolicy, Capacity>, SignalPolicy, StoragePolicy, OverflowPolicy, TimerStoragePolicy, ProfilerPolicy >

Specify custom queue capacity for bounded MPSC queue (preserves existing event variant).

◆ WithClockPolicy

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 NewClockPolicy >
using corium::BasicRuntimeBuilder< EventVariant, QueuePolicy, SignalPolicy, StoragePolicy, OverflowPolicy, TimerStoragePolicy, ProfilerPolicy >::WithClockPolicy = BasicRuntimeBuilder< EventVariant, QueuePolicy, SignalPolicy, StoragePolicy, OverflowPolicy, FixedTimerStoragePolicy<TimerStoragePolicy::max_timers, NewClockPolicy>, ProfilerPolicy >

Specify custom ClockPolicy (time source strategy).

◆ WithEvents

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 NewEventVariant >
using corium::BasicRuntimeBuilder< EventVariant, QueuePolicy, SignalPolicy, StoragePolicy, OverflowPolicy, TimerStoragePolicy, ProfilerPolicy >::WithEvents = BasicRuntimeBuilder< NewEventVariant, internal::rebind_queue_policy_t<QueuePolicy, NewEventVariant>, SignalPolicy, StoragePolicy, OverflowPolicy, TimerStoragePolicy, ProfilerPolicy >

Specify custom event variant list type (preserves existing queue capacity/policy).

◆ WithFlightRecorder

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<std::size_t BufferCapacity = 256>
using corium::BasicRuntimeBuilder< EventVariant, QueuePolicy, SignalPolicy, StoragePolicy, OverflowPolicy, TimerStoragePolicy, ProfilerPolicy >::WithFlightRecorder = BasicRuntimeBuilder< EventVariant, QueuePolicy, SignalPolicy, StoragePolicy, OverflowPolicy, TimerStoragePolicy, profiler::FlightRecorderProfiler<BufferCapacity, internal::queue_capacity_of_v<QueuePolicy> > >

Convenience helper: Configure FlightRecorder circular trace logger. The QueueCapacity of the internal timestamp ring buffer is automatically derived from the current QueuePolicy capacity, ensuring accurate per-event latency measurement.

◆ WithInlineSize

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<size_t NewInlineSize>
using corium::BasicRuntimeBuilder< EventVariant, QueuePolicy, SignalPolicy, StoragePolicy, OverflowPolicy, TimerStoragePolicy, ProfilerPolicy >::WithInlineSize = BasicRuntimeBuilder< EventVariant, QueuePolicy, SignalPolicy, FixedStoragePolicy<StoragePolicy::max_handlers_per_event, NewInlineSize>, OverflowPolicy, TimerStoragePolicy, ProfilerPolicy >

Specify inline storage size for FastDelegate (rebinds StoragePolicy).

◆ WithLatencyTracker

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<std::size_t BufferCapacity = 256>
using corium::BasicRuntimeBuilder< EventVariant, QueuePolicy, SignalPolicy, StoragePolicy, OverflowPolicy, TimerStoragePolicy, ProfilerPolicy >::WithLatencyTracker = BasicRuntimeBuilder< EventVariant, QueuePolicy, SignalPolicy, StoragePolicy, OverflowPolicy, TimerStoragePolicy, profiler::LatencyTracker<internal::queue_capacity_of_v<QueuePolicy> > >

Convenience helper: Configure real-time event latency statistics tracker. The QueueCapacity of the internal timestamp ring buffer is automatically derived from the current QueuePolicy capacity, ensuring accurate per-event latency measurement.

◆ WithMaxHandlersPerEvent

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<size_t NewMaxHandlers>
using corium::BasicRuntimeBuilder< EventVariant, QueuePolicy, SignalPolicy, StoragePolicy, OverflowPolicy, TimerStoragePolicy, ProfilerPolicy >::WithMaxHandlersPerEvent = BasicRuntimeBuilder< EventVariant, QueuePolicy, SignalPolicy, FixedStoragePolicy<NewMaxHandlers, StoragePolicy::inline_storage_size>, OverflowPolicy, TimerStoragePolicy, ProfilerPolicy >

Specify maximum handlers per event type (rebinds StoragePolicy).

◆ WithMaxTimers

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<size_t MaxTimers>
using corium::BasicRuntimeBuilder< EventVariant, QueuePolicy, SignalPolicy, StoragePolicy, OverflowPolicy, TimerStoragePolicy, ProfilerPolicy >::WithMaxTimers = BasicRuntimeBuilder< EventVariant, QueuePolicy, SignalPolicy, StoragePolicy, OverflowPolicy, FixedTimerStoragePolicy<MaxTimers>, ProfilerPolicy >

Specify maximum number of concurrent active timers.

◆ WithOverflowPolicy

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 NewOverflowPolicy >
using corium::BasicRuntimeBuilder< EventVariant, QueuePolicy, SignalPolicy, StoragePolicy, OverflowPolicy, TimerStoragePolicy, ProfilerPolicy >::WithOverflowPolicy = BasicRuntimeBuilder< EventVariant, QueuePolicy, SignalPolicy, StoragePolicy, NewOverflowPolicy, TimerStoragePolicy, ProfilerPolicy >

Specify custom OverflowPolicy.

◆ WithPriorityQueue

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<size_t HighCapacity = 256, size_t NormalCapacity = 1024>
using corium::BasicRuntimeBuilder< EventVariant, QueuePolicy, SignalPolicy, StoragePolicy, OverflowPolicy, TimerStoragePolicy, ProfilerPolicy >::WithPriorityQueue = BasicRuntimeBuilder< EventVariant, PriorityMpscQueuePolicy<EventVariant, HighCapacity, NormalCapacity>, SignalPolicy, StoragePolicy, OverflowPolicy, TimerStoragePolicy, ProfilerPolicy >

Switch queue policy to PriorityMpscQueuePolicy with specified high and normal capacities.

◆ WithProfiler

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 NewProfilerPolicy >
using corium::BasicRuntimeBuilder< EventVariant, QueuePolicy, SignalPolicy, StoragePolicy, OverflowPolicy, TimerStoragePolicy, ProfilerPolicy >::WithProfiler = BasicRuntimeBuilder< EventVariant, QueuePolicy, SignalPolicy, StoragePolicy, OverflowPolicy, TimerStoragePolicy, NewProfilerPolicy >

Specify custom ProfilerPolicy strategy.

◆ WithQueuePolicy

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 NewQueuePolicy >
using corium::BasicRuntimeBuilder< EventVariant, QueuePolicy, SignalPolicy, StoragePolicy, OverflowPolicy, TimerStoragePolicy, ProfilerPolicy >::WithQueuePolicy = BasicRuntimeBuilder< EventVariant, NewQueuePolicy, SignalPolicy, StoragePolicy, OverflowPolicy, TimerStoragePolicy, ProfilerPolicy >

Specify custom QueuePolicy.

◆ WithSignalPolicy

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 NewSignalPolicy >
using corium::BasicRuntimeBuilder< EventVariant, QueuePolicy, SignalPolicy, StoragePolicy, OverflowPolicy, TimerStoragePolicy, ProfilerPolicy >::WithSignalPolicy = BasicRuntimeBuilder< EventVariant, QueuePolicy, NewSignalPolicy, StoragePolicy, OverflowPolicy, TimerStoragePolicy, ProfilerPolicy >

Specify custom SignalPolicy.

◆ WithStoragePolicy

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 NewStoragePolicy >
using corium::BasicRuntimeBuilder< EventVariant, QueuePolicy, SignalPolicy, StoragePolicy, OverflowPolicy, TimerStoragePolicy, ProfilerPolicy >::WithStoragePolicy = BasicRuntimeBuilder< EventVariant, QueuePolicy, SignalPolicy, NewStoragePolicy, OverflowPolicy, TimerStoragePolicy, ProfilerPolicy >

Specify custom StoragePolicy.

◆ WithTimerStoragePolicy

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 NewTimerStoragePolicy >
using corium::BasicRuntimeBuilder< EventVariant, QueuePolicy, SignalPolicy, StoragePolicy, OverflowPolicy, TimerStoragePolicy, ProfilerPolicy >::WithTimerStoragePolicy = BasicRuntimeBuilder< EventVariant, QueuePolicy, SignalPolicy, StoragePolicy, OverflowPolicy, NewTimerStoragePolicy, ProfilerPolicy >

Specify custom TimerStoragePolicy.


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