Skip to main content

moqtap_client/draft07/
mod.rs

1//! MoQT client implementation for draft-07.
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 `draft07` feature.
10//!
11//! # Differences from later drafts
12//!
13//! * Request IDs are called **subscribe_id**, allocated monotonically from 0
14//!   (no client/server parity rule).
15//! * Namespace publication uses **ANNOUNCE / UNANNOUNCE** (instead of
16//!   `PUBLISH_NAMESPACE` which appears in draft-14).
17//! * There is no standalone `PUBLISH` flow — publishers announce namespaces
18//!   and respond to SUBSCRIBE messages.
19//! * Subgroup object IDs are **not** delta-encoded, and there are no
20//!   extension headers. Subgroup/fetch/datagram decoding is stateless.
21
22/// Outbound MoQT connection with MoQT framing over QUIC.
23pub mod connection;
24/// Unified endpoint state machine orchestrating all MoQT protocol flows.
25pub mod endpoint;
26/// Client event types emitted via the observer.
27pub mod event;
28/// Fetch lifecycle state machine.
29pub mod fetch;
30/// Announce / SubscribeAnnounces state machines.
31pub mod namespace;
32/// Connection observer trait for receiving client events.
33pub mod observer;
34/// Session state, setup validation, and subscribe ID allocation.
35pub mod session;
36/// Subscription lifecycle state machine.
37pub mod subscription;
38/// Track status lifecycle state machine.
39pub mod track_status;