25 typename QueuePolicy = BoundedMpscQueuePolicy<DefaultEvents, 1024>,
26 typename SignalPolicy = NoSignalPolicy,
27 typename OverflowPolicy = DropNewestOverflowPolicy
38 auto res = _queuePolicy.tryPush(event, priority);
40 return _overflowPolicy.handleOverflow(_queuePolicy, std::move(event), priority);
44 _signalPolicy.signal();
54 return pushEvent(std::move(copy), priority);
60 return _queuePolicy.tryPop(event);
68 if (_queuePolicy.tryPop(event)) {
75 [[nodiscard]]
bool empty()
const
77 return _queuePolicy.empty();
83 _signalPolicy.setOnQueueNonEmpty(callback);
101 return _overflowPolicy;
107 return _overflowPolicy;
111 [[no_unique_address]] QueuePolicy _queuePolicy;
112 [[no_unique_address]] SignalPolicy _signalPolicy;
113 [[no_unique_address]] OverflowPolicy _overflowPolicy;
118using internal::EventQueue;
Standard lifecycle events (QuitEvent, ErrorEvent, TimerEvent).
Queue saturation policies (DropNewest, DropOldest, Audit, Panic).
Bounded and multi-tier priority MPSC queueing policies.
Thread wake-up policies (NoSignalPolicy, ConditionVariableSignalPolicy).
Event queue composing QueuePolicy, SignalPolicy, and OverflowPolicy strategy types.
Definition EventQueue.hpp:29
std::optional< EventVariant > tryPopEvent()
Pop an event from the queue.
Definition EventQueue.hpp:65
const OverflowPolicy & overflowPolicy() const noexcept
Access const reference to overflow policy.
Definition EventQueue.hpp:105
bool tryPopEvent(EventVariant &event)
Pop an event directly into output reference without intermediate optional.
Definition EventQueue.hpp:58
SignalPolicy & signalPolicy() noexcept
Access reference to signal policy.
Definition EventQueue.hpp:87
bool empty() const
Check if event queue is empty.
Definition EventQueue.hpp:75
bool pushEvent(EventVariant &&event, EventPriority priority=EventPriority::Normal)
Push an event into the queue and trigger signal policy on 0->1 transition (rvalue overload).
Definition EventQueue.hpp:36
bool pushEvent(const EventVariant &event, EventPriority priority=EventPriority::Normal)
Push an event into the queue (const lvalue overload).
Definition EventQueue.hpp:51
void setOnQueueNonEmpty(StaticCallback callback)
Set non-allocating static callback triggered when queue transitions from empty to non-empty.
Definition EventQueue.hpp:81
typename QueuePolicy::EventType EventVariant
Definition EventQueue.hpp:31
OverflowPolicy & overflowPolicy() noexcept
Access reference to overflow policy.
Definition EventQueue.hpp:99
const SignalPolicy & signalPolicy() const noexcept
Access const reference to signal policy.
Definition EventQueue.hpp:93
Definition Application.hpp:16
EventPriority
Event priority levels for multi-priority queue policies.
Definition QueuePolicies.hpp:32
Lightweight non-allocating static callback wrapper (function pointer + optional context argument).
Definition SignalPolicies.hpp:35