Expand description
The write facade (issue #36): the only two ways an explorer writes to the bus — a declared publication, and a disciplined RPC call.
Reading stayed the engine’s whole job until now; both frontends need the
same two write paths (zenctl topic pub / service call, the zengui
publish/call pane), and the discipline they must share is exactly the kind
that fails silently when duplicated:
- P7: telemetry/state publishers are declared, never one-shot ad-hoc
puts — so
Publicationwraps a declared publisher, and there is no bare-put helper here at all; - QoS is the closed enum (RFC 04 §3), mapped to the wire in one place,
including the v1.5
expressaxis (alert/frame) that nothing set before; - fan-out refusal is layered (RFC 05 §2.1): generated builders make a
forbidden-fanout write unspellable; this facade adds the registry
layer for dynamic callers — a
*-origin call to a procedure whose slice declaresfanout = "forbidden"is refused before any GET leaves.
Structs§
- Matching
Events - A stream of matching changes for one self-declared entity (a
Publicationor acrate::RepeatingQuery). These are the only two places a matching claim can be made from — a foreign publisher’s consumers are not observable without publishing on their key, and that half stays deferred (RFC 12 §9; #38/#80 adoption note). - Publication
- A declared publisher with its QoS profile applied — the only publish path.
Enums§
- Call
Target - Who a call is addressed to. Typed — a fleet call is a deliberate variant,
never a string that happens to contain
*(RFC 08 §1.1’s origin-argument rule for dynamic callers). - Retire
Class - What a key is, for the purpose of retiring it — the guard’s positive verdict, so callers print facts instead of re-deriving them.
Functions§
- call
- Call a procedure and report every attributed answer.
- check_
retire - Refuse a tombstone the class semantics do not license, unless forced.
- declare_
publication - Declare a publication on a full wire key (explorers are un-namespaced;
compose with
with_basefirst).