6 #include <shared_mutex>
12 template <
typename Payload>
15 template <
typename Payload>
17 using Handler = std::function<void(Payload
const &)>;
25 std::map<uint64_t, Handler>
subs_;
26 std::shared_mutex
mu_;
35 state_.
subs_[subscription_id] = [exec = std::move(execution_context), h = std::move(handler)](
auto const &payload) {
36 exec([&h, payload] { h(payload); });
38 return subscription_id;
47 template <
typename Payload>
51 void emit(Payload
const &payload)
const {
54 subscription(payload);
59 template <
class Owner,
typename Payload>
friend Owner
Definition: event.hpp:61
std::map< uint64_t, Handler > subs_
Definition: event.hpp:25
std::shared_mutex mu_
Definition: event.hpp:26
uint64_t next_subscription_id_
Definition: event.hpp:24
Definition: default_construct_copyable_movable.hpp:10
task_executor_t current_thread_executor()
Definition: functional.hpp:9
std::function< void(task_t &&)> task_executor_t
Definition: functional.hpp:7
void emit(Payload const &payload) const
Definition: event.hpp:51
EventSubscriber()=default
class taraxa::util::event::EventSubscriber::State state_
auto unsubscribe(uint64_t subscription_id) const
Definition: event.hpp:41
auto subscribe(Handler &&handler, task_executor_t &&execution_context=current_thread_executor()) const
Definition: event.hpp:32
std::function< void(Payload const &)> Handler
Definition: event.hpp:17