21 typename EventVariant,
23 typename SignalPolicy,
24 typename StoragePolicy,
25 typename OverflowPolicy,
26 typename TimerStoragePolicy,
27 typename ProfilerPolicy
34template <std::
size_t N>
44 return static_cast<std::size_t
>(val + 1);
50template <
typename QueuePolicy,
typename =
void>
53template <
typename QueuePolicy>
55 : std::integral_constant<std::size_t, next_power_of_two<QueuePolicy::capacity>()> {};
57template <
typename QueuePolicy>
61template <
typename QueuePolicy,
typename NewEventVariant>
64template <
template <
typename,
size_t>
class QueuePolicy,
typename OldEventVariant,
size_t Capacity,
typename NewEventVariant>
66 using type = QueuePolicy<NewEventVariant, Capacity>;
69template <
template <
typename,
size_t,
size_t,
size_t>
class QueuePolicy,
typename OldEventVariant,
size_t HighCap,
size_t NormalCap,
size_t LowCap,
typename NewEventVariant>
70struct rebind_queue_policy<QueuePolicy<OldEventVariant, HighCap, NormalCap, LowCap>, NewEventVariant> {
71 using type = QueuePolicy<NewEventVariant, HighCap, NormalCap, LowCap>;
74template <
template <
typename>
class QueuePolicy,
typename OldEventVariant,
typename NewEventVariant>
76 using type = QueuePolicy<NewEventVariant>;
79template <
typename QueuePolicy,
typename NewEventVariant>
83template <
typename QueuePolicy,
size_t NewCapacity>
86template <
template <
typename,
size_t>
class QueuePolicy,
typename EventVariant,
size_t OldCapacity,
size_t NewCapacity>
88 using type = QueuePolicy<EventVariant, NewCapacity>;
91template <
template <
typename,
size_t,
size_t,
size_t>
class QueuePolicy,
typename EventVariant,
size_t HighCap,
size_t OldNormalCap,
size_t LowCap,
size_t NewCapacity>
93 using type = QueuePolicy<EventVariant, HighCap, NewCapacity, LowCap>;
96template <
typename QueuePolicy,
size_t NewCapacity>
114 template <
typename NewEventVariant>
126 template <
size_t Capacity>
138 template <
size_t HighCapacity = 256,
size_t NormalCapacity = 1024>
150 template <
typename NewQueuePolicy>
162 template <
typename NewSignalPolicy>
174 template <
typename NewStoragePolicy>
186 template <
typename NewOverflowPolicy>
198 template <
size_t MaxTimers>
210 template <
typename NewClockPolicy>
222 template <
typename NewTimerStoragePolicy>
229 NewTimerStoragePolicy,
234 template <
size_t NewMaxHandlers>
246 template <
size_t NewInlineSize>
258 template <
typename NewProfilerPolicy>
272 template <std::
size_t BufferCapacity = 256>
286 template <std::
size_t BufferCapacity = 256>
Queue saturation policies (DropNewest, DropOldest, Audit, Panic).
Latency tracking and flight recording policies with runtime toggle.
Bounded and multi-tier priority MPSC queueing policies.
Deterministic single-consumer event loop coordinator and runner.
Thread wake-up policies (NoSignalPolicy, ConditionVariableSignalPolicy).
Static storage capacity policies for FastDelegate SBO inline buffers.
Timer scheduler static capacity and storage policies.
Corium Application Runtime managing MPSC event loops and static policy execution. Zero dynamic heap a...
Definition Runtime.hpp:48
Queue Policy for fixed-capacity, zero-allocation lock-free MPSC RingBuffer.
Definition QueuePolicies.hpp:43
Signal Policy for busy-spin / polling event loops (sub-microsecond latency, zero signaling cost).
Definition SignalPolicies.hpp:72
Queue Policy supporting strict event priorities using separate lock-free MPSC ring buffers....
Definition QueuePolicies.hpp:96
Combined Flight Recorder and Latency Tracker Profiler. Records historical event traces into a circula...
Definition ProfilerPolicies.hpp:251
Real-time event latency and performance statistics tracker. Zero dynamic memory allocation....
Definition ProfilerPolicies.hpp:87
constexpr std::size_t next_power_of_two()
Compile-time helper to round up an integer to the next power of 2.
Definition RuntimeBuilder.hpp:35
static constexpr std::size_t queue_capacity_of_v
Definition RuntimeBuilder.hpp:58
typename rebind_queue_capacity< QueuePolicy, NewCapacity >::type rebind_queue_capacity_t
Definition RuntimeBuilder.hpp:97
typename rebind_queue_policy< QueuePolicy, NewEventVariant >::type rebind_queue_policy_t
Definition RuntimeBuilder.hpp:80
Definition Application.hpp:16
FixedTimerStoragePolicy< 64, ChronoClockPolicy > DefaultTimerStoragePolicy
Definition TimerPolicies.hpp:24
std::variant< QuitEvent, TickEvent, UpdateEvent, ErrorEvent, SignalEvent > DefaultEvents
Default variant list of core Corium events.
Definition Events.hpp:62
FixedStoragePolicy< 8, 32 > DefaultStoragePolicy
Default storage policy (8 handlers per event type, 32 bytes inline delegate storage).
Definition StoragePolicies.hpp:24
Primary template implementation for fluent compile-time Runtime construction.
Definition RuntimeBuilder.hpp:112
Default Overflow Policy: Silently drop incoming new event when queue is full. Zero overhead.
Definition OverflowPolicies.hpp:20
Policy configuring compile-time handler capacity and delegate inline storage size.
Definition StoragePolicies.hpp:18
Compile-time policy configuring TimerScheduler capacity and clock source.
Definition TimerPolicies.hpp:19
Fluent compile-time builder for configuring BasicRuntime. Usage: using MyRuntime = corium::RuntimeBui...
Definition RuntimeBuilder.hpp:304
Extract queue capacity from a QueuePolicy if it exposes a static ::capacity member,...
Definition RuntimeBuilder.hpp:51
QueuePolicy< EventVariant, HighCap, NewCapacity, LowCap > type
Definition RuntimeBuilder.hpp:93
QueuePolicy< EventVariant, NewCapacity > type
Definition RuntimeBuilder.hpp:88
Rebind QueuePolicy Capacity while preserving EventVariant.
Definition RuntimeBuilder.hpp:84
QueuePolicy< NewEventVariant, Capacity > type
Definition RuntimeBuilder.hpp:66
QueuePolicy< NewEventVariant, HighCap, NormalCap, LowCap > type
Definition RuntimeBuilder.hpp:71
QueuePolicy< NewEventVariant > type
Definition RuntimeBuilder.hpp:76
Rebind QueuePolicy EventVariant type parameter while preserving Capacity or Policy structure.
Definition RuntimeBuilder.hpp:62
Default Profiler Policy: Zero-overhead, completely compiled out by inline empty functions.
Definition ProfilerPolicies.hpp:21