12template <
typename Payload>
15template <
typename Payload>
17 using Handler = std::function<void(Payload
const &)>;
25 std::map<uint64_t, Handler>
subs_;
26 std::shared_mutex
mu_;
32 auto subscribe(
Handler &&handler, std::shared_ptr<util::ThreadPool> execution_context)
const {
35 state_.
subs_[subscription_id] = [exec = std::move(execution_context), h = std::move(handler)](
auto const &payload) {
36 exec->post([&h, payload] { h(payload); });
38 return subscription_id;
47template <
typename Payload>
51 void emit(Payload
const &payload)
const {
54 subscription(payload);
59template <
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
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, std::shared_ptr< util::ThreadPool > execution_context) const
Definition event.hpp:32
std::function< void(Payload const &)> Handler
Definition event.hpp:17