Corium 1.1.0
High-Performance Zero-Heap C++20 MPSC Application Runtime
Loading...
Searching...
No Matches
corium::BasicEventSink< EventVariant > Class Template Reference

Non-virtual type-erased event sink handle (raw pointer + static function pointer). Zero dynamic heap allocations, zero vtables/RTTI. More...

#include <EventSink.hpp>

+ Inheritance diagram for corium::BasicEventSink< EventVariant >:
+ Collaboration diagram for corium::BasicEventSink< EventVariant >:

Public Types

using EventVariantType = EventVariant
 

Public Member Functions

 BasicEventSink ()=default
 
 BasicEventSink (BasicEventSink &&) noexcept=default
 
template<typename ConcreteSink >
requires (!std::is_same_v<std::decay_t<ConcreteSink>, BasicEventSink>)
 BasicEventSink (ConcreteSink &sink)
 
 BasicEventSink (const BasicEventSink &)=default
 
 operator bool () const noexcept
 
BasicEventSinkoperator= (BasicEventSink &&) noexcept=default
 
BasicEventSinkoperator= (const BasicEventSink &)=default
 
void post (const EventVariant &event, EventPriority priority=EventPriority::Normal) const
 Post an event into the event sink with priority (const lvalue overload).
 
void post (EventVariant &&event, EventPriority priority=EventPriority::Normal) const
 Post an event into the event sink with priority (rvalue overload).
 
template<typename Event >
void postHighPriority (Event &&event) const
 Convenience helper for posting high-priority events (e.g. from ISR handlers).
 

Detailed Description

template<typename EventVariant = DefaultEvents>
class corium::BasicEventSink< EventVariant >

Non-virtual type-erased event sink handle (raw pointer + static function pointer). Zero dynamic heap allocations, zero vtables/RTTI.

Template Parameters
EventVariantThe variant type list of supported events.

Member Typedef Documentation

◆ EventVariantType

template<typename EventVariant = DefaultEvents>
using corium::BasicEventSink< EventVariant >::EventVariantType = EventVariant

Constructor & Destructor Documentation

◆ BasicEventSink() [1/4]

template<typename EventVariant = DefaultEvents>
corium::BasicEventSink< EventVariant >::BasicEventSink ( )
default

◆ BasicEventSink() [2/4]

template<typename EventVariant = DefaultEvents>
corium::BasicEventSink< EventVariant >::BasicEventSink ( const BasicEventSink< EventVariant > &  )
default

◆ BasicEventSink() [3/4]

template<typename EventVariant = DefaultEvents>
corium::BasicEventSink< EventVariant >::BasicEventSink ( BasicEventSink< EventVariant > &&  )
defaultnoexcept

◆ BasicEventSink() [4/4]

template<typename EventVariant = DefaultEvents>
template<typename ConcreteSink >
requires (!std::is_same_v<std::decay_t<ConcreteSink>, BasicEventSink>)
corium::BasicEventSink< EventVariant >::BasicEventSink ( ConcreteSink &  sink)
inlineexplicit
+ Here is the call graph for this function:

Member Function Documentation

◆ operator bool()

template<typename EventVariant = DefaultEvents>
corium::BasicEventSink< EventVariant >::operator bool ( ) const
inlineexplicitnoexcept

◆ operator=() [1/2]

template<typename EventVariant = DefaultEvents>
BasicEventSink & corium::BasicEventSink< EventVariant >::operator= ( BasicEventSink< EventVariant > &&  )
defaultnoexcept

◆ operator=() [2/2]

template<typename EventVariant = DefaultEvents>
BasicEventSink & corium::BasicEventSink< EventVariant >::operator= ( const BasicEventSink< EventVariant > &  )
default

◆ post() [1/2]

template<typename EventVariant = DefaultEvents>
void corium::BasicEventSink< EventVariant >::post ( const EventVariant &  event,
EventPriority  priority = EventPriority::Normal 
) const
inline

Post an event into the event sink with priority (const lvalue overload).

◆ post() [2/2]

template<typename EventVariant = DefaultEvents>
void corium::BasicEventSink< EventVariant >::post ( EventVariant &&  event,
EventPriority  priority = EventPriority::Normal 
) const
inline

Post an event into the event sink with priority (rvalue overload).

+ Here is the caller graph for this function:

◆ postHighPriority()

template<typename EventVariant = DefaultEvents>
template<typename Event >
void corium::BasicEventSink< EventVariant >::postHighPriority ( Event &&  event) const
inline

Convenience helper for posting high-priority events (e.g. from ISR handlers).

+ Here is the call graph for this function:

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