26 add_route_impl(
"**", std::move(cb));
30 add_route_impl(std::string{pattern}, std::move(cb));
38 std::vector<Route> snapshot;
40 std::scoped_lock lock(mu_);
43 const std::string_view name = v.
name();
44 for (
const auto& r : snapshot) {
60 return add_route_impl(std::string{pattern}, std::move(cb));
64 std::scoped_lock lock(mu_);
65 for (
auto it = routes_.begin(); it != routes_.end(); ++it) {
74 std::scoped_lock lock(mu_);
75 return routes_.size();
85 std::size_t add_route_impl(std::string pattern,
Callback cb) {
86 std::scoped_lock lock(mu_);
87 const auto id = ++next_id_;
88 routes_.push_back(Route{id, std::move(pattern), std::move(cb)});
92 mutable std::mutex mu_;
93 std::vector<Route> routes_;
94 std::size_t next_id_ = 0;
Polymorphic envelope cell.
Definition envelope.hpp:62
std::string_view name() const noexcept
Definition envelope.hpp:91
static constexpr bool match(const std::string_view pattern, const std::string_view name) noexcept
Free function helper for one-shot matching.
Definition glob.hpp:103
Definition transport.hpp:30
Definition transport.hpp:21
Transport(Callback cb)
Definition transport.hpp:25
void dispatch(const EventEnvelopeView &v) override
Definition transport.hpp:37
std::size_t add_route(const std::string_view pattern, Callback cb)
Add a new route at runtime.
Definition transport.hpp:59
Transport(const std::string_view pattern, Callback cb)
Definition transport.hpp:29
std::function< void(const EventEnvelopeView &)> Callback
Definition transport.hpp:23
std::size_t route_count() const noexcept
Definition transport.hpp:73
TransportScope scope() const noexcept override
Definition transport.hpp:33
void remove_route(const std::size_t id) noexcept
Definition transport.hpp:63
EventEnvelope — a parcel cell carrying conduit's envelope metadata plus a polymorphic payload cell.
Transport interface and the local/remote scope enum used for flag-based filtering.
Definition transport.hpp:19
TransportScope
Distinguishes in-process transports from off-machine ones.
Definition transport.hpp:21