9#include <commons/prioritized.hpp>
18#include <parcel/parcel.h>
59 : backref_(std::move(
other.backref_)), id_(
other.id_), active_(
other.active_) {
60 other.active_ =
false;
65 backref_ = std::move(
other.backref_);
67 active_ =
other.active_;
68 other.active_ =
false;
78 if (active_ && backref_) {
79 backref_->release(id_);
95 std::shared_ptr<detail::SubscriptionBackref> backref_;
106 static_assert(std::derived_from<T, parcel::ICell>,
107 "EventListener<T>: T must derive from conduit::Event<T, Name>");
116 virtual
void on_event(const T&) = 0;
134 virtual
void register_to(
Bus& bus) = 0;
137 return subscriptions_;
141 template <
typename T,
typename F>
142 void on(
Bus& bus, F&& handler);
144 template <
typename F>
145 void on(
Bus& bus, std::string_view pattern, F&& handler);
148 std::vector<Subscription> subscriptions_;
Class-based listener — derive and override on_event.
Definition listener.hpp:104
EventListener(EventListener &&) noexcept=default
EventListener(const EventListener &)=default
Multi-event subscriber base.
Definition listener.hpp:125
EventSubscriber(const EventSubscriber &)=delete
EventSubscriber(EventSubscriber &&) noexcept=default
EventSubscriber()=default
RAII handle returned by Bus::listen(...).
Definition listener.hpp:47
Subscription & operator=(const Subscription &)=delete
void detach() noexcept
Definition listener.hpp:85
bool active() const noexcept
Definition listener.hpp:90
Subscription & operator=(Subscription &&other) noexcept
Definition listener.hpp:62
Subscription() noexcept=default
~Subscription()
Definition listener.hpp:73
void release() noexcept
Definition listener.hpp:77
Subscription(Subscription &&other) noexcept
Definition listener.hpp:58
Subscription(const Subscription &)=delete
Erased back-reference the Subscription holds.
Definition listener.hpp:32
virtual void release(SubscriptionId id) noexcept=0
SubscriptionBackref(const SubscriptionBackref &)=default
SubscriptionBackref()=default
SubscriptionBackref(SubscriptionBackref &&) noexcept=default
EventEnvelope — a parcel cell carrying conduit's envelope metadata plus a polymorphic payload cell.
Event<Self, Name> library base built on parcel::SelfStructCell.
flags::FlagSet collect_default_flags()
Definition event.hpp:86
std::uint64_t SubscriptionId
Token used by the bus to unregister a listener.
Definition listener.hpp:27
Definition builder.hpp:22