Github   Telegram
No Matches
Public Member Functions | List of all members
concurrent::ConflatedEventChannel Class Reference

A non-blocking version of 'AsyncEventChannel'. More...

#include <userver/concurrent/conflated_event_channel.hpp>

+ Inheritance diagram for concurrent::ConflatedEventChannel:
+ Collaboration diagram for concurrent::ConflatedEventChannel:

Public Member Functions

 ConflatedEventChannel (std::string name)
template<typename... Args>
void AddChannel (concurrent::AsyncEventSource< Args... > &channel)
 For convenient forwarding of events from other channels.
template<typename Class >
concurrent::AsyncEventSubscriberScope UpdateAndListen (Class *obj, std::string_view name, void(Class::*func)())
void SendEvent ()

Detailed Description

A non-blocking version of 'AsyncEventChannel'.

The difference is that 'SendEvent' returns immediately, without waiting for subscribers to finish. If 'SendEvent' is called multiple times while subscribers are handling the previous event, new events will be conflated (all events except for the last one will be ignored). This class can be used instead of 'AsyncEventChannel' when we've got a "heavy" subscriber and we don't want to slow down the pipeline.

Definition at line 24 of file conflated_event_channel.hpp.

Member Function Documentation

◆ AddChannel()

template<typename... Args>
void concurrent::ConflatedEventChannel::AddChannel ( concurrent::AsyncEventSource< Args... > &  channel)

For convenient forwarding of events from other channels.

Definition at line 55 of file conflated_event_channel.hpp.

◆ UpdateAndListen()

template<typename Class >
concurrent::AsyncEventSubscriberScope concurrent::ConflatedEventChannel::UpdateAndListen ( Class *  obj,
std::string_view  name,
void(Class::*)()  func 

Subscribes to updates using a member function. Also immediately invokes the function with the current config snapshot.

Definition at line 62 of file conflated_event_channel.hpp.

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