#include <userver/concurrent/async_event_channel.hpp>
AsyncEventChannel is an in-process pub-sub with strict FIFO serialization, i.e. only after the event was processed a new event may appear for processing, same listener is never called concurrently.
Example usage:
Definition at line 74 of file async_event_channel.hpp.
 Inheritance diagram for concurrent::AsyncEventChannel< Args >:
 Collaboration diagram for concurrent::AsyncEventChannel< Args >:Public Types | |
| using | Function = typename AsyncEventSource<Args...>::Function | 
| using | OnRemoveCallback = std::function<void(Function&)> | 
  Public Types inherited from concurrent::AsyncEventSource< Args... > | |
| using | Function | 
Public Member Functions | |
| AsyncEventChannel (std::string name) | |
| The primary constructor.   | |
| AsyncEventChannel (std::string name, OnRemoveCallback on_listener_removal) | |
The constructor with AsyncEventSubscriberScope usage checking.   | |
| template<typename UpdaterFunc > | |
| AsyncEventSubscriberScope | DoUpdateAndListen (FunctionId id, std::string_view name, Function &&func, UpdaterFunc &&updater) | 
For use in UpdateAndListen of specific event channels.   | |
| template<typename Class , typename UpdaterFunc > | |
| AsyncEventSubscriberScope | DoUpdateAndListen (Class *obj, std::string_view name, void(Class::*func)(Args...), UpdaterFunc &&updater) | 
| This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.   | |
| void | SendEvent (Args... args) const | 
| const std::string & | Name () const noexcept | 
  Public Member Functions inherited from concurrent::AsyncEventSource< Args... > | |
| AsyncEventSubscriberScope | AddListener (Class *obj, std::string_view name, void(Class::*func)(Args...)) | 
| Subscribes to updates from this event source.   | |
| AsyncEventSubscriberScope | AddListener (FunctionId id, std::string_view name, Function &&func) | 
| A type-erased version of AddListener.   | |
Additional Inherited Members | |
  Protected Member Functions inherited from concurrent::AsyncEventSource< Args... > | |
| virtual AsyncEventSubscriberScope | DoAddListener (FunctionId id, std::string_view name, Function &&func)=0 | 
| using concurrent::AsyncEventChannel< Args >::Function = typename AsyncEventSource<Args...>::Function | 
Definition at line 76 of file async_event_channel.hpp.
| using concurrent::AsyncEventChannel< Args >::OnRemoveCallback = std::function<void(Function&)> | 
Definition at line 77 of file async_event_channel.hpp.
      
  | 
  inlineexplicit | 
The primary constructor.
| name | used for diagnostic purposes and is also accessible with Name | 
Definition at line 81 of file async_event_channel.hpp.
      
  | 
  inline | 
The constructor with AsyncEventSubscriberScope usage checking. 
The constructor with a callback that is called on listener removal. The callback takes a reference to ‘Function’ as input. This is useful for checking the lifetime of data captured by the listener update function.
on_listener_removal function must be valid until the AsyncEventChannel object is completely destroyed.Example usage:
| name | used for diagnostic purposes and is also accessible with Name | 
| on_listener_removal | the callback used for check | 
Definition at line 102 of file async_event_channel.hpp.
      
  | 
  inline | 
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
Definition at line 124 of file async_event_channel.hpp.
      
  | 
  inline | 
For use in UpdateAndListen of specific event channels. 
Atomically calls updater, which should invoke func with the previously sent event, and subscribes to new events as if using AddListener.
Definition at line 113 of file async_event_channel.hpp.
      
  | 
  inlinenoexcept | 
Definition at line 159 of file async_event_channel.hpp.
      
  | 
  inline | 
Send the next event and wait until all the listeners process it.
Strict FIFO serialization is guaranteed, i.e. only after this event is processed a new event may be delivered for the subscribers, same listener/subscriber is never called concurrently.
Definition at line 138 of file async_event_channel.hpp.