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

Event queue composing QueuePolicy, SignalPolicy, and OverflowPolicy strategy types. More...

#include <EventQueue.hpp>

+ Inheritance diagram for corium::internal::EventQueue< QueuePolicy, SignalPolicy, OverflowPolicy >:
+ Collaboration diagram for corium::internal::EventQueue< QueuePolicy, SignalPolicy, OverflowPolicy >:

Public Types

using EventVariant = typename QueuePolicy::EventType
 

Public Member Functions

bool empty () const
 Check if event queue is empty.
 
 EventQueue ()=default
 
const OverflowPolicy & overflowPolicy () const noexcept
 Access const reference to overflow policy.
 
OverflowPolicy & overflowPolicy () noexcept
 Access reference to overflow policy.
 
bool pushEvent (const EventVariant &event, EventPriority priority=EventPriority::Normal)
 Push an event into the queue (const lvalue overload).
 
bool pushEvent (EventVariant &&event, EventPriority priority=EventPriority::Normal)
 Push an event into the queue and trigger signal policy on 0->1 transition (rvalue overload).
 
void setOnQueueNonEmpty (StaticCallback callback)
 Set non-allocating static callback triggered when queue transitions from empty to non-empty.
 
const SignalPolicy & signalPolicy () const noexcept
 Access const reference to signal policy.
 
SignalPolicy & signalPolicy () noexcept
 Access reference to signal policy.
 
std::optional< EventVarianttryPopEvent ()
 Pop an event from the queue.
 
bool tryPopEvent (EventVariant &event)
 Pop an event directly into output reference without intermediate optional.
 

Detailed Description

template<typename QueuePolicy = BoundedMpscQueuePolicy<DefaultEvents, 1024>, typename SignalPolicy = NoSignalPolicy, typename OverflowPolicy = DropNewestOverflowPolicy>
class corium::internal::EventQueue< QueuePolicy, SignalPolicy, OverflowPolicy >

Event queue composing QueuePolicy, SignalPolicy, and OverflowPolicy strategy types.

Template Parameters
QueuePolicyQueueing policy strategy.
SignalPolicySignaling policy strategy.
OverflowPolicyStrategy for handling queue overflow when capacity is exceeded.

Member Typedef Documentation

◆ EventVariant

template<typename QueuePolicy = BoundedMpscQueuePolicy<DefaultEvents, 1024>, typename SignalPolicy = NoSignalPolicy, typename OverflowPolicy = DropNewestOverflowPolicy>
using corium::internal::EventQueue< QueuePolicy, SignalPolicy, OverflowPolicy >::EventVariant = typename QueuePolicy::EventType

Constructor & Destructor Documentation

◆ EventQueue()

template<typename QueuePolicy = BoundedMpscQueuePolicy<DefaultEvents, 1024>, typename SignalPolicy = NoSignalPolicy, typename OverflowPolicy = DropNewestOverflowPolicy>
corium::internal::EventQueue< QueuePolicy, SignalPolicy, OverflowPolicy >::EventQueue ( )
default

Member Function Documentation

◆ empty()

template<typename QueuePolicy = BoundedMpscQueuePolicy<DefaultEvents, 1024>, typename SignalPolicy = NoSignalPolicy, typename OverflowPolicy = DropNewestOverflowPolicy>
bool corium::internal::EventQueue< QueuePolicy, SignalPolicy, OverflowPolicy >::empty ( ) const
inline

Check if event queue is empty.

◆ overflowPolicy() [1/2]

template<typename QueuePolicy = BoundedMpscQueuePolicy<DefaultEvents, 1024>, typename SignalPolicy = NoSignalPolicy, typename OverflowPolicy = DropNewestOverflowPolicy>
const OverflowPolicy & corium::internal::EventQueue< QueuePolicy, SignalPolicy, OverflowPolicy >::overflowPolicy ( ) const
inlinenoexcept

Access const reference to overflow policy.

◆ overflowPolicy() [2/2]

template<typename QueuePolicy = BoundedMpscQueuePolicy<DefaultEvents, 1024>, typename SignalPolicy = NoSignalPolicy, typename OverflowPolicy = DropNewestOverflowPolicy>
OverflowPolicy & corium::internal::EventQueue< QueuePolicy, SignalPolicy, OverflowPolicy >::overflowPolicy ( )
inlinenoexcept

Access reference to overflow policy.

◆ pushEvent() [1/2]

template<typename QueuePolicy = BoundedMpscQueuePolicy<DefaultEvents, 1024>, typename SignalPolicy = NoSignalPolicy, typename OverflowPolicy = DropNewestOverflowPolicy>
bool corium::internal::EventQueue< QueuePolicy, SignalPolicy, OverflowPolicy >::pushEvent ( const EventVariant event,
EventPriority  priority = EventPriority::Normal 
)
inline

Push an event into the queue (const lvalue overload).

+ Here is the call graph for this function:

◆ pushEvent() [2/2]

template<typename QueuePolicy = BoundedMpscQueuePolicy<DefaultEvents, 1024>, typename SignalPolicy = NoSignalPolicy, typename OverflowPolicy = DropNewestOverflowPolicy>
bool corium::internal::EventQueue< QueuePolicy, SignalPolicy, OverflowPolicy >::pushEvent ( EventVariant &&  event,
EventPriority  priority = EventPriority::Normal 
)
inline

Push an event into the queue and trigger signal policy on 0->1 transition (rvalue overload).

+ Here is the caller graph for this function:

◆ setOnQueueNonEmpty()

template<typename QueuePolicy = BoundedMpscQueuePolicy<DefaultEvents, 1024>, typename SignalPolicy = NoSignalPolicy, typename OverflowPolicy = DropNewestOverflowPolicy>
void corium::internal::EventQueue< QueuePolicy, SignalPolicy, OverflowPolicy >::setOnQueueNonEmpty ( StaticCallback  callback)
inline

Set non-allocating static callback triggered when queue transitions from empty to non-empty.

◆ signalPolicy() [1/2]

template<typename QueuePolicy = BoundedMpscQueuePolicy<DefaultEvents, 1024>, typename SignalPolicy = NoSignalPolicy, typename OverflowPolicy = DropNewestOverflowPolicy>
const SignalPolicy & corium::internal::EventQueue< QueuePolicy, SignalPolicy, OverflowPolicy >::signalPolicy ( ) const
inlinenoexcept

Access const reference to signal policy.

◆ signalPolicy() [2/2]

template<typename QueuePolicy = BoundedMpscQueuePolicy<DefaultEvents, 1024>, typename SignalPolicy = NoSignalPolicy, typename OverflowPolicy = DropNewestOverflowPolicy>
SignalPolicy & corium::internal::EventQueue< QueuePolicy, SignalPolicy, OverflowPolicy >::signalPolicy ( )
inlinenoexcept

Access reference to signal policy.

◆ tryPopEvent() [1/2]

template<typename QueuePolicy = BoundedMpscQueuePolicy<DefaultEvents, 1024>, typename SignalPolicy = NoSignalPolicy, typename OverflowPolicy = DropNewestOverflowPolicy>
std::optional< EventVariant > corium::internal::EventQueue< QueuePolicy, SignalPolicy, OverflowPolicy >::tryPopEvent ( )
inline

Pop an event from the queue.

Returns
Optional containing popped event, or std::nullopt if empty.

◆ tryPopEvent() [2/2]

template<typename QueuePolicy = BoundedMpscQueuePolicy<DefaultEvents, 1024>, typename SignalPolicy = NoSignalPolicy, typename OverflowPolicy = DropNewestOverflowPolicy>
bool corium::internal::EventQueue< QueuePolicy, SignalPolicy, OverflowPolicy >::tryPopEvent ( EventVariant event)
inline

Pop an event directly into output reference without intermediate optional.


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