JSON publishing over moq-net tracks, in two modes:
- [
snapshot]: lossy. One JSON value updated over time; a consumer only gets the most recent value. Intermediate updates are collapsed and older groups are dropped. - [
stream]: lossless. An ordered append-log of self-contained records; every record is preserved and delivered in order, nothing is ever superseded.
Pick [snapshot] when consumers care about "what is the value now" (a catalog, a status
document) and [stream] when they care about every record (an event log, a media timeline).
Each mode comes in two layers. Producer/Consumer own a [moq_net] track and manage its
groups. Encoder/Decoder are the same logic without the track: values in, frame payloads out
(and back), with the encoder saying where the group boundaries fall. Reach for the codec layer
when something else already owns the track, such as a moq_mux::container::Producer also
managing a timeline and a catalog estimate.