Skip to main content

Module dispatch

Module dispatch 

Source
Expand description

Dispatcher: the single entry point that takes one or more primitives and returns one rendered wire response per primitive.

Both the wire server (server/mod.rs) and in-process tests funnel through [Daemon::dispatch]. Today the wire delivers exactly one primitive per frame, so the inbound vec has length 1 and the response is a single rendered envelope+body. M5.5 PRs 2–6 introduce composite-flag primitives that internally expand into multiple sequenced primitives. The wire syntax for explicit pipelines (v2, see ADR 0007) lands as a parser-only change against this same dispatcher — no further dispatcher rewrite required.

§Why Primitive = Request (today)

Request already carries everything the dispatcher needs: the primitive name, positional args, and a flag map. Composite flags (--view, --layout=, --read=) are entries in that map, not new variants. A typed Primitive enum may land in a later milestone once we have evidence that the dispatcher’s match-on-name is genuinely brittle in practice. Until then it would be type-system ceremony for no payoff.

Structs§

DispatchOutcome
One rendered response, in the canonical wire shape: warnings (if any) + envelope + body lines, terminated by a single \n. The dispatcher never inserts the framing blank line — the caller (server::handle_connection) does that between outcomes.

Type Aliases§

Primitive
A single primitive in a dispatch sequence. Today this is a re-export of vs_protocol::Request; see the module docs.