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