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

Execution context provided to background services. Allows services to post events back to the main event queue thread-safely and communicate with other registered background services. More...

#include <ServiceContext.hpp>

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

Public Types

using GetServiceFn = void *(*)(void *registryPtr, internal::TypeIdPtr typeId)
 

Public Member Functions

 BasicServiceContext ()=default
 
 BasicServiceContext (EventSinkT< EventVariant > sink, void *regPtr=nullptr, GetServiceFn fn=nullptr) noexcept
 
EventSinkT< EventVariant > eventSink () const noexcept
 Access main application EventSink handle.
 
template<typename ServiceType >
ServiceType * getService () const noexcept
 Retrieve another registered service instance by type.
 
template<typename ServiceType >
EventSinkT< EventVariant > getServiceSink () const noexcept
 Retrieve event sink handle of a target registered service if available.
 
EventSinkT< EventVariant > mainSink () const noexcept
 Access main application EventSink handle.
 
template<typename TargetService , typename EventType >
bool sendToService (EventType &&event, EventPriority priority=EventPriority::Normal) const
 Post an event directly to a target service.
 
void setRegistry (void *registryPtr, GetServiceFn fn) noexcept
 Configure registry resolution bridge (internal framework usage).
 

Detailed Description

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

Execution context provided to background services. Allows services to post events back to the main event queue thread-safely and communicate with other registered background services.

Template Parameters
EventVariantThe variant type list of supported events.

Member Typedef Documentation

◆ GetServiceFn

template<typename EventVariant = DefaultEvents>
using corium::BasicServiceContext< EventVariant >::GetServiceFn = void* (*)(void* registryPtr, internal::TypeIdPtr typeId)

Constructor & Destructor Documentation

◆ BasicServiceContext() [1/2]

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

◆ BasicServiceContext() [2/2]

template<typename EventVariant = DefaultEvents>
corium::BasicServiceContext< EventVariant >::BasicServiceContext ( EventSinkT< EventVariant >  sink,
void *  regPtr = nullptr,
GetServiceFn  fn = nullptr 
)
inlineexplicitnoexcept

Member Function Documentation

◆ eventSink()

template<typename EventVariant = DefaultEvents>
EventSinkT< EventVariant > corium::BasicServiceContext< EventVariant >::eventSink ( ) const
inlinenoexcept

Access main application EventSink handle.

◆ getService()

template<typename EventVariant = DefaultEvents>
template<typename ServiceType >
ServiceType * corium::BasicServiceContext< EventVariant >::getService ( ) const
inlinenoexcept

Retrieve another registered service instance by type.

Template Parameters
ServiceTypeType of the target background service.
Returns
Pointer to ServiceType instance or nullptr if not registered.

◆ getServiceSink()

template<typename EventVariant = DefaultEvents>
template<typename ServiceType >
EventSinkT< EventVariant > corium::BasicServiceContext< EventVariant >::getServiceSink ( ) const
inlinenoexcept

Retrieve event sink handle of a target registered service if available.

Template Parameters
ServiceTypeType of the target background service.
Returns
EventSinkT handle targeting the service's incoming queue, or empty handle if unavailable.

◆ mainSink()

template<typename EventVariant = DefaultEvents>
EventSinkT< EventVariant > corium::BasicServiceContext< EventVariant >::mainSink ( ) const
inlinenoexcept

Access main application EventSink handle.

◆ sendToService()

template<typename EventVariant = DefaultEvents>
template<typename TargetService , typename EventType >
bool corium::BasicServiceContext< EventVariant >::sendToService ( EventType &&  event,
EventPriority  priority = EventPriority::Normal 
) const
inline

Post an event directly to a target service.

Template Parameters
TargetServiceTarget service type to send the event to.
EventTypeEvent type to send.
Parameters
eventEvent instance to post.
priorityPriority level.
Returns
true if event was posted to the target service; false if target service was not found or has no sink.

◆ setRegistry()

template<typename EventVariant = DefaultEvents>
void corium::BasicServiceContext< EventVariant >::setRegistry ( void *  registryPtr,
GetServiceFn  fn 
)
inlinenoexcept

Configure registry resolution bridge (internal framework usage).

+ Here is the caller graph for this function:

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