Skip to main content

moqtap_client/draft11/
mod.rs

1//! MoQT client implementation for draft-11.
2//!
3//! Each draft lives in its own top-level module with a complete, independent
4//! implementation: connection, endpoint state machine, event types, observer
5//! trait, and per-flow state machines (subscribe, fetch, announce, track
6//! status). No code is shared across drafts — each draft carries its own copy
7//! because wire-level differences would make a shared layer leaky.
8//!
9//! Enable via the `draft11` feature.
10//!
11//! # Differences from draft-10
12//!
13//! Draft-11 is a structural change from draft-10. The most visible shifts:
14//!
15//! - `subscribe_id` is renamed to `request_id` throughout the control plane.
16//! - `MAX_SUBSCRIBE_ID` / `SUBSCRIBES_BLOCKED` become
17//!   `MAX_REQUEST_ID` / `REQUESTS_BLOCKED`.
18//! - `Subscribe` gains a `forward` field; `group_order` and `filter_type` are
19//!   carried as VarInts rather than typed enums.
20//! - `SubscribeOk` collapses the largest group/object pair into a single
21//!   optional `largest_location`; `SubscribeError` gains a trailing
22//!   `track_alias`; `SubscribeDone` gains `stream_count`.
23//! - `Announce` / `AnnounceOk` / `AnnounceError` and `SubscribeAnnounces*`
24//!   use `request_id` instead of carrying the namespace on every reply.
25//! - `TrackStatusRequest` / `TrackStatus` are request-id keyed and `TrackStatus`
26//!   no longer echoes the track namespace / name; it carries a
27//!   `largest_location`.
28//! - `Fetch` is restructured into a `FetchPayload` enum (`Standalone` vs
29//!   `Joining`); `FetchOk` uses a single `end_location` and adds
30//!   `end_of_track`.
31//! - The data-stream layer adds subgroup variants 0x08–0x0D, datagram types
32//!   0x00–0x03, and per-object extension headers.
33
34/// Outbound MoQT connection with MoQT framing over QUIC.
35pub mod connection;
36/// Unified endpoint state machine orchestrating all MoQT protocol flows.
37pub mod endpoint;
38/// Client event types emitted via the observer.
39pub mod event;
40/// Fetch lifecycle state machine.
41pub mod fetch;
42/// Announce / SubscribeAnnounces state machines.
43pub mod namespace;
44/// Connection observer trait for receiving client events.
45pub mod observer;
46/// Session state, setup validation, and request ID allocation.
47pub mod session;
48/// Subscription lifecycle state machine.
49pub mod subscription;
50/// Track status lifecycle state machine.
51pub mod track_status;