contur2
Loading...
Searching...
No Matches
contur::Event< Args > Class Template Reference

Type-safe event dispatcher supporting multiple subscribers. More...

#include <event.h>

Classes

struct  Subscriber

Public Types

using Callback = std::function<void(Args...)>
 The callback signature for subscribers.

Public Member Functions

 Event ()=default
 ~Event ()=default
 Event (const Event &)=delete
Eventoperator= (const Event &)=delete
 Event (Event &&) noexcept=default
Eventoperator= (Event &&) noexcept=default
SubscriptionId subscribe (Callback callback)
 Registers a callback to be invoked when the event fires.
bool unsubscribe (SubscriptionId id)
 Removes a previously registered subscription.
void emit (Args... args) const
 Fires the event, invoking all registered callbacks with the given arguments.
std::size_t subscriberCount () const noexcept
 Returns the number of active subscribers.
void clear ()
 Removes all subscribers.

Private Attributes

std::vector< Subscribersubscribers_
SubscriptionId nextId_ = 1

Detailed Description

template<typename... Args>
class contur::Event< Args >

Type-safe event dispatcher supporting multiple subscribers.

Template Parameters
ArgsThe argument types passed to subscribers when the event fires.

Usage:

auto id = onProcess.subscribe([](int pid, const std::string& name) {
std::cout << "Process " << pid << ": " << name << "\n";
});
onProcess.emit(1, "init");
onProcess.unsubscribe(id);
SubscriptionId subscribe(Callback callback)
Registers a callback to be invoked when the event fires.
Definition event.h:51
Event()=default
void emit(Args... args) const
Fires the event, invoking all registered callbacks with the given arguments.
Definition event.h:76
bool unsubscribe(SubscriptionId id)
Removes a previously registered subscription.
Definition event.h:61

Definition at line 31 of file event.h.

Member Typedef Documentation

◆ Callback

template<typename... Args>
using contur::Event< Args >::Callback = std::function<void(Args...)>

The callback signature for subscribers.

Definition at line 35 of file event.h.

Constructor & Destructor Documentation

◆ Event() [1/3]

template<typename... Args>
contur::Event< Args >::Event ( )
default

◆ ~Event()

template<typename... Args>
contur::Event< Args >::~Event ( )
default

◆ Event() [2/3]

template<typename... Args>
contur::Event< Args >::Event ( const Event< Args > & )
delete

◆ Event() [3/3]

template<typename... Args>
contur::Event< Args >::Event ( Event< Args > && )
defaultnoexcept

Member Function Documentation

◆ clear()

template<typename... Args>
void contur::Event< Args >::clear ( )
inline

Removes all subscribers.

Definition at line 91 of file event.h.

◆ emit()

template<typename... Args>
void contur::Event< Args >::emit ( Args... args) const
inline

Fires the event, invoking all registered callbacks with the given arguments.

Parameters
argsThe arguments to forward to each subscriber.

Definition at line 76 of file event.h.

◆ operator=() [1/2]

template<typename... Args>
Event & contur::Event< Args >::operator= ( const Event< Args > & )
delete

◆ operator=() [2/2]

template<typename... Args>
Event & contur::Event< Args >::operator= ( Event< Args > && )
defaultnoexcept

◆ subscribe()

template<typename... Args>
SubscriptionId contur::Event< Args >::subscribe ( Callback callback)
inlinenodiscard

Registers a callback to be invoked when the event fires.

Parameters
callbackThe function to call on emit().
Returns
A SubscriptionId that can be used to unsubscribe later.

Definition at line 51 of file event.h.

◆ subscriberCount()

template<typename... Args>
std::size_t contur::Event< Args >::subscriberCount ( ) const
inlinenodiscardnoexcept

Returns the number of active subscribers.

Definition at line 85 of file event.h.

◆ unsubscribe()

template<typename... Args>
bool contur::Event< Args >::unsubscribe ( SubscriptionId id)
inline

Removes a previously registered subscription.

Parameters
idThe SubscriptionId returned by subscribe().
Returns
true if the subscription was found and removed, false otherwise.

Definition at line 61 of file event.h.

Member Data Documentation

◆ nextId_

template<typename... Args>
SubscriptionId contur::Event< Args >::nextId_ = 1
private

Definition at line 104 of file event.h.

◆ subscribers_

template<typename... Args>
std::vector<Subscriber> contur::Event< Args >::subscribers_
private

Definition at line 103 of file event.h.


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