moqtap_codec/draft07/mod.rs
1//! MoQT wire codec for draft-07.
2//!
3//! The earliest draft this codec speaks, so there is no delta to record. What
4//! follows is the other half of that: the places where draft-07 differs from
5//! every draft after it, each of which has been mistaken for a later draft's
6//! behaviour at some point in this tree.
7//!
8//! - **ROLE is required.** Section 6.2.2.1: "Both endpoints MUST send a ROLE
9//! parameter with one of the three values specified above. Both endpoints
10//! MUST close the session if the ROLE parameter is missing or is not one of
11//! the three above-specified values." Draft-08 removes the parameter and no
12//! later draft brings it back, so this is the only draft where a setup
13//! message can be refused for the parameter it is missing.
14//! - **A server refuses a GOAWAY outright.** Section 6.3: "The server MUST
15//! terminate the session with a Protocol Violation (Section 3.5) if it
16//! receives a GOAWAY
17//! message." Every draft from 08 on narrows this to a GOAWAY carrying a New
18//! Session URI, so an empty GOAWAY at a server is legal there and a session
19//! close here.
20//! - **Object Status 0x5 is End of Subgroup**, whose "Object ID is one greater
21//! than the largest normal object ID in the Subgroup". Drafts 08, 09 and 10
22//! assign 0x5 to End of Track and require the opposite - an Object ID of
23//! zero - and drafts 11 and later assign 0x5 nothing at all.
24//! - **Filter Type 0x1 is Latest Group**, which begins at the current group.
25//! Drafts 09 and 10 withdraw the value; drafts 11 and later reuse the number
26//! for Next Group Start, one group later.
27//! - **There are no extension headers.** The phrase does not appear in this
28//! draft. Draft-08 introduces them as a count of headers and draft-09 changes
29//! that to a byte length.
30//! - **SUBSCRIBE's AbsoluteRange carries an EndObject** beside its EndGroup.
31//! Draft-08 drops it and the filter ends at a group.
32//! - The FETCH message has no Fetch Type, so there is no Joining Fetch.
33/// Data stream headers (subgroup, datagram, fetch, object).
34pub mod data_stream;
35/// Session termination, SUBSCRIBE_ERROR and SUBSCRIBE_DONE code registries.
36pub mod error_codes;
37/// Control message types with encode/decode.
38pub mod message;
39/// Draft-07 specific types (Role, ObjectStatus).
40pub mod types;