|
| | BasicEventBus ()=default |
| |
| std::size_t | drain () |
| | Drain and dispatch all currently enqueued events.
|
| |
| bool | empty () const |
| | Check if event queue is empty.
|
| |
| const OverflowPolicy & | overflowPolicy () const noexcept |
| | Access const reference to overflow policy.
|
| |
| OverflowPolicy & | overflowPolicy () noexcept |
| | Access reference to overflow policy.
|
| |
| void | post (const EventVariant &event, EventPriority priority=EventPriority::Normal) |
| | Post an event into the queue with optional priority (const lvalue overload).
|
| |
| void | post (EventVariant &&event, EventPriority priority=EventPriority::Normal) |
| | Post an event into the queue with optional priority (rvalue overload).
|
| |
| template<typename Event > |
| void | postHighPriority (Event &&event) |
| | Convenience helper for posting high-priority events.
|
| |
| std::size_t | processBatch (std::size_t maxBatch) |
| | Process up to maxBatch events consecutively from the queue.
|
| |
| bool | processOne () |
| | Process a single event from the queue.
|
| |
| const ProfilerPolicy & | profiler () const noexcept |
| | Access const reference to profiler policy.
|
| |
| ProfilerPolicy & | profiler () noexcept |
| | Access reference to profiler policy.
|
| |
| ReactorType & | reactor () noexcept |
| | Access reference to reactor.
|
| |
| template<typename EventType , typename Handler > |
| bool | registerHandler (Handler &&handler) |
| | Register an event handler with explicit event type parameter.
|
| |
| template<typename Handler > |
| bool | registerHandler (Handler &&handler) |
| | Register an event handler with automatic event type deduction.
|
| |
| void | seal () |
| | Seal reactor handlers.
|
| |
| void | setOnQueueNonEmpty (StaticCallback callback) |
| | Set static callback for event availability when queue transitions to non-empty.
|
| |
| const SignalPolicy & | signalPolicy () const noexcept |
| | Access const reference to signal policy.
|
| |
| SignalPolicy & | signalPolicy () noexcept |
| | Access reference to signal policy.
|
| |
| EventSinkT< EventVariant > | sink () noexcept |
| | Get an EventSink handle pointing to this event bus.
|
| |
template<typename EventVariantType = DefaultEvents, typename QueuePolicy = BoundedMpscQueuePolicy<EventVariantType, 1024>, typename SignalPolicy = NoSignalPolicy, typename StoragePolicy = DefaultStoragePolicy, typename OverflowPolicy = DropNewestOverflowPolicy, typename ProfilerPolicy = profiler::NullProfiler>
class corium::BasicEventBus< EventVariantType, QueuePolicy, SignalPolicy, StoragePolicy, OverflowPolicy, ProfilerPolicy >
Policy-configurable non-virtual event bus implementation.
- Template Parameters
-
| EventVariantType | The variant type list of supported events. |
| QueuePolicy | Strategy for queueing events (bounded lock-free MPSC). |
| SignalPolicy | Strategy for signaling (NoSignalPolicy by default). |
| StoragePolicy | Strategy for compile-time handler capacity and delegate storage. |
| OverflowPolicy | Strategy for queue overflow handling. |
| ProfilerPolicy | Strategy for latency telemetry and trace recording (NullProfiler by default). |
template<typename EventVariantType = DefaultEvents, typename QueuePolicy = BoundedMpscQueuePolicy<EventVariantType, 1024>, typename SignalPolicy = NoSignalPolicy, typename StoragePolicy = DefaultStoragePolicy, typename OverflowPolicy = DropNewestOverflowPolicy, typename ProfilerPolicy = profiler::NullProfiler>
| using corium::BasicEventBus< EventVariantType, QueuePolicy, SignalPolicy, StoragePolicy, OverflowPolicy, ProfilerPolicy >::EventVariant = EventVariantType |
template<typename EventVariantType = DefaultEvents, typename QueuePolicy = BoundedMpscQueuePolicy<EventVariantType, 1024>, typename SignalPolicy = NoSignalPolicy, typename StoragePolicy = DefaultStoragePolicy, typename OverflowPolicy = DropNewestOverflowPolicy, typename ProfilerPolicy = profiler::NullProfiler>
| using corium::BasicEventBus< EventVariantType, QueuePolicy, SignalPolicy, StoragePolicy, OverflowPolicy, ProfilerPolicy >::ProfilerPolicyType = ProfilerPolicy |
template<typename EventVariantType = DefaultEvents, typename QueuePolicy = BoundedMpscQueuePolicy<EventVariantType, 1024>, typename SignalPolicy = NoSignalPolicy, typename StoragePolicy = DefaultStoragePolicy, typename OverflowPolicy = DropNewestOverflowPolicy, typename ProfilerPolicy = profiler::NullProfiler>
| corium::BasicEventBus< EventVariantType, QueuePolicy, SignalPolicy, StoragePolicy, OverflowPolicy, ProfilerPolicy >::BasicEventBus |
( |
| ) |
|
|
default |
template<typename EventVariantType = DefaultEvents, typename QueuePolicy = BoundedMpscQueuePolicy<EventVariantType, 1024>, typename SignalPolicy = NoSignalPolicy, typename StoragePolicy = DefaultStoragePolicy, typename OverflowPolicy = DropNewestOverflowPolicy, typename ProfilerPolicy = profiler::NullProfiler>
| std::size_t corium::BasicEventBus< EventVariantType, QueuePolicy, SignalPolicy, StoragePolicy, OverflowPolicy, ProfilerPolicy >::drain |
( |
| ) |
|
|
inline |
Drain and dispatch all currently enqueued events.
- Returns
- Total number of events processed.
template<typename EventVariantType = DefaultEvents, typename QueuePolicy = BoundedMpscQueuePolicy<EventVariantType, 1024>, typename SignalPolicy = NoSignalPolicy, typename StoragePolicy = DefaultStoragePolicy, typename OverflowPolicy = DropNewestOverflowPolicy, typename ProfilerPolicy = profiler::NullProfiler>
| bool corium::BasicEventBus< EventVariantType, QueuePolicy, SignalPolicy, StoragePolicy, OverflowPolicy, ProfilerPolicy >::empty |
( |
| ) |
const |
|
inline |
Check if event queue is empty.
template<typename EventVariantType = DefaultEvents, typename QueuePolicy = BoundedMpscQueuePolicy<EventVariantType, 1024>, typename SignalPolicy = NoSignalPolicy, typename StoragePolicy = DefaultStoragePolicy, typename OverflowPolicy = DropNewestOverflowPolicy, typename ProfilerPolicy = profiler::NullProfiler>
| const OverflowPolicy & corium::BasicEventBus< EventVariantType, QueuePolicy, SignalPolicy, StoragePolicy, OverflowPolicy, ProfilerPolicy >::overflowPolicy |
( |
| ) |
const |
|
inlinenoexcept |
Access const reference to overflow policy.
template<typename EventVariantType = DefaultEvents, typename QueuePolicy = BoundedMpscQueuePolicy<EventVariantType, 1024>, typename SignalPolicy = NoSignalPolicy, typename StoragePolicy = DefaultStoragePolicy, typename OverflowPolicy = DropNewestOverflowPolicy, typename ProfilerPolicy = profiler::NullProfiler>
| OverflowPolicy & corium::BasicEventBus< EventVariantType, QueuePolicy, SignalPolicy, StoragePolicy, OverflowPolicy, ProfilerPolicy >::overflowPolicy |
( |
| ) |
|
|
inlinenoexcept |
Access reference to overflow policy.
template<typename EventVariantType = DefaultEvents, typename QueuePolicy = BoundedMpscQueuePolicy<EventVariantType, 1024>, typename SignalPolicy = NoSignalPolicy, typename StoragePolicy = DefaultStoragePolicy, typename OverflowPolicy = DropNewestOverflowPolicy, typename ProfilerPolicy = profiler::NullProfiler>
Post an event into the queue with optional priority (const lvalue overload).
- Parameters
-
| event | Const reference to event variant instance. |
| priority | Priority tier (EventPriority::High, Normal, Low). |
- Note
- Thread-safe, lock-free, zero heap allocation.
template<typename EventVariantType = DefaultEvents, typename QueuePolicy = BoundedMpscQueuePolicy<EventVariantType, 1024>, typename SignalPolicy = NoSignalPolicy, typename StoragePolicy = DefaultStoragePolicy, typename OverflowPolicy = DropNewestOverflowPolicy, typename ProfilerPolicy = profiler::NullProfiler>
Post an event into the queue with optional priority (rvalue overload).
- Parameters
-
- Note
- Thread-safe, lock-free, zero heap allocation.
- See also
- EventSinkT for non-owning posting handle.
template<typename EventVariantType = DefaultEvents, typename QueuePolicy = BoundedMpscQueuePolicy<EventVariantType, 1024>, typename SignalPolicy = NoSignalPolicy, typename StoragePolicy = DefaultStoragePolicy, typename OverflowPolicy = DropNewestOverflowPolicy, typename ProfilerPolicy = profiler::NullProfiler>
template<typename
Event >
| void corium::BasicEventBus< EventVariantType, QueuePolicy, SignalPolicy, StoragePolicy, OverflowPolicy, ProfilerPolicy >::postHighPriority |
( |
Event && |
event | ) |
|
|
inline |
Convenience helper for posting high-priority events.
- Template Parameters
-
| Event | Concrete event type convertible to EventVariant. |
- Parameters
-
- Note
- Guaranteed to be dispatched ahead of standard Normal/Low priority events.
template<typename EventVariantType = DefaultEvents, typename QueuePolicy = BoundedMpscQueuePolicy<EventVariantType, 1024>, typename SignalPolicy = NoSignalPolicy, typename StoragePolicy = DefaultStoragePolicy, typename OverflowPolicy = DropNewestOverflowPolicy, typename ProfilerPolicy = profiler::NullProfiler>
| std::size_t corium::BasicEventBus< EventVariantType, QueuePolicy, SignalPolicy, StoragePolicy, OverflowPolicy, ProfilerPolicy >::processBatch |
( |
std::size_t |
maxBatch | ) |
|
|
inline |
Process up to maxBatch events consecutively from the queue.
- Parameters
-
| maxBatch | Maximum number of events to process in this batch. |
- Returns
- Number of events successfully popped and dispatched.
template<typename EventVariantType = DefaultEvents, typename QueuePolicy = BoundedMpscQueuePolicy<EventVariantType, 1024>, typename SignalPolicy = NoSignalPolicy, typename StoragePolicy = DefaultStoragePolicy, typename OverflowPolicy = DropNewestOverflowPolicy, typename ProfilerPolicy = profiler::NullProfiler>
| bool corium::BasicEventBus< EventVariantType, QueuePolicy, SignalPolicy, StoragePolicy, OverflowPolicy, ProfilerPolicy >::processOne |
( |
| ) |
|
|
inline |
Process a single event from the queue.
- Returns
- true if an event was popped and dispatched; false if queue was empty.
template<typename EventVariantType = DefaultEvents, typename QueuePolicy = BoundedMpscQueuePolicy<EventVariantType, 1024>, typename SignalPolicy = NoSignalPolicy, typename StoragePolicy = DefaultStoragePolicy, typename OverflowPolicy = DropNewestOverflowPolicy, typename ProfilerPolicy = profiler::NullProfiler>
| const ProfilerPolicy & corium::BasicEventBus< EventVariantType, QueuePolicy, SignalPolicy, StoragePolicy, OverflowPolicy, ProfilerPolicy >::profiler |
( |
| ) |
const |
|
inlinenoexcept |
Access const reference to profiler policy.
template<typename EventVariantType = DefaultEvents, typename QueuePolicy = BoundedMpscQueuePolicy<EventVariantType, 1024>, typename SignalPolicy = NoSignalPolicy, typename StoragePolicy = DefaultStoragePolicy, typename OverflowPolicy = DropNewestOverflowPolicy, typename ProfilerPolicy = profiler::NullProfiler>
| ProfilerPolicy & corium::BasicEventBus< EventVariantType, QueuePolicy, SignalPolicy, StoragePolicy, OverflowPolicy, ProfilerPolicy >::profiler |
( |
| ) |
|
|
inlinenoexcept |
Access reference to profiler policy.
template<typename EventVariantType = DefaultEvents, typename QueuePolicy = BoundedMpscQueuePolicy<EventVariantType, 1024>, typename SignalPolicy = NoSignalPolicy, typename StoragePolicy = DefaultStoragePolicy, typename OverflowPolicy = DropNewestOverflowPolicy, typename ProfilerPolicy = profiler::NullProfiler>
Access reference to reactor.
template<typename EventVariantType = DefaultEvents, typename QueuePolicy = BoundedMpscQueuePolicy<EventVariantType, 1024>, typename SignalPolicy = NoSignalPolicy, typename StoragePolicy = DefaultStoragePolicy, typename OverflowPolicy = DropNewestOverflowPolicy, typename ProfilerPolicy = profiler::NullProfiler>
template<typename EventType , typename Handler >
| bool corium::BasicEventBus< EventVariantType, QueuePolicy, SignalPolicy, StoragePolicy, OverflowPolicy, ProfilerPolicy >::registerHandler |
( |
Handler && |
handler | ) |
|
|
inline |
Register an event handler with explicit event type parameter.
- Template Parameters
-
| EventType | Event type to handle. |
| Handler | Callable handler type. |
- Parameters
-
| handler | Callback to invoke when event occurs. |
template<typename EventVariantType = DefaultEvents, typename QueuePolicy = BoundedMpscQueuePolicy<EventVariantType, 1024>, typename SignalPolicy = NoSignalPolicy, typename StoragePolicy = DefaultStoragePolicy, typename OverflowPolicy = DropNewestOverflowPolicy, typename ProfilerPolicy = profiler::NullProfiler>
template<typename Handler >
| bool corium::BasicEventBus< EventVariantType, QueuePolicy, SignalPolicy, StoragePolicy, OverflowPolicy, ProfilerPolicy >::registerHandler |
( |
Handler && |
handler | ) |
|
|
inline |
Register an event handler with automatic event type deduction.
- Template Parameters
-
| Handler | Callable handler type (lambda, function pointer, or functor). |
- Parameters
-
| handler | Callback to invoke when event occurs. |
template<typename EventVariantType = DefaultEvents, typename QueuePolicy = BoundedMpscQueuePolicy<EventVariantType, 1024>, typename SignalPolicy = NoSignalPolicy, typename StoragePolicy = DefaultStoragePolicy, typename OverflowPolicy = DropNewestOverflowPolicy, typename ProfilerPolicy = profiler::NullProfiler>
| void corium::BasicEventBus< EventVariantType, QueuePolicy, SignalPolicy, StoragePolicy, OverflowPolicy, ProfilerPolicy >::seal |
( |
| ) |
|
|
inline |
template<typename EventVariantType = DefaultEvents, typename QueuePolicy = BoundedMpscQueuePolicy<EventVariantType, 1024>, typename SignalPolicy = NoSignalPolicy, typename StoragePolicy = DefaultStoragePolicy, typename OverflowPolicy = DropNewestOverflowPolicy, typename ProfilerPolicy = profiler::NullProfiler>
Set static callback for event availability when queue transitions to non-empty.
template<typename EventVariantType = DefaultEvents, typename QueuePolicy = BoundedMpscQueuePolicy<EventVariantType, 1024>, typename SignalPolicy = NoSignalPolicy, typename StoragePolicy = DefaultStoragePolicy, typename OverflowPolicy = DropNewestOverflowPolicy, typename ProfilerPolicy = profiler::NullProfiler>
| const SignalPolicy & corium::BasicEventBus< EventVariantType, QueuePolicy, SignalPolicy, StoragePolicy, OverflowPolicy, ProfilerPolicy >::signalPolicy |
( |
| ) |
const |
|
inlinenoexcept |
Access const reference to signal policy.
template<typename EventVariantType = DefaultEvents, typename QueuePolicy = BoundedMpscQueuePolicy<EventVariantType, 1024>, typename SignalPolicy = NoSignalPolicy, typename StoragePolicy = DefaultStoragePolicy, typename OverflowPolicy = DropNewestOverflowPolicy, typename ProfilerPolicy = profiler::NullProfiler>
| SignalPolicy & corium::BasicEventBus< EventVariantType, QueuePolicy, SignalPolicy, StoragePolicy, OverflowPolicy, ProfilerPolicy >::signalPolicy |
( |
| ) |
|
|
inlinenoexcept |
Access reference to signal policy.
template<typename EventVariantType = DefaultEvents, typename QueuePolicy = BoundedMpscQueuePolicy<EventVariantType, 1024>, typename SignalPolicy = NoSignalPolicy, typename StoragePolicy = DefaultStoragePolicy, typename OverflowPolicy = DropNewestOverflowPolicy, typename ProfilerPolicy = profiler::NullProfiler>
Get an EventSink handle pointing to this event bus.