pub struct GraphObserveAllReactive { /* private fields */ }Expand description
Reactive observe_all — auto-subscribes late-added named nodes via
the owner-side namespace-change listener, and prunes torn-down
nodes via the Core topology sub (the prune unsubscribe is
MailboxOp::Defer’d since NodeTornDown fires in-wave — D246 r6).
D246 rule 3: no RAII Drop; teardown is the owner-invoked
Self::detach(core) — owner-invoked, REQUIRED. The ns-sink is
collected by graph.destroy(core); the Core topology sub + fan-out
subs are opened via raw core.subscribe* and are NOT
OwnedCore-tracked, so detach(core) is the only thing that
collects them (dropping the handle without it leaks them).
Implementations§
Source§impl GraphObserveAllReactive
impl GraphObserveAllReactive
Sourcepub fn subscribe<F>(&mut self, core: &Core, sink: F) -> usize
pub fn subscribe<F>(&mut self, core: &Core, sink: F) -> usize
Subscribe a sink to all current AND future named nodes.
§Panics
Panics if called more than once on the same handle (single-shot
wiring; rebuild via observe_all_reactive).
Sourcepub fn detach(&mut self, core: &Core)
pub fn detach(&mut self, core: &Core)
Owner-invoked, synchronous teardown (D246 rule 3 — replaces the
retired RAII Drop; eliminates the Blind #4 deadlock class).
Topology sub first, then namespace sink, then drain the fan-out
subs into a local Vec and release the inner lock BEFORE the
core.unsubscribe cascade (Core::unsubscribe runs the full
deactivation chain and can fire sinks synchronously; holding
inner across it would self-deadlock — the pre-β invariant,
preserved).