Skip to main content

Module draft23

Module draft23 

Source
Expand description

MoQT client implementation for draft-23.

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, publish, namespace, track status). Enable via the draft23 feature. The negotiated draft is the ALPN, moqt-23 on raw QUIC; there is no version on the wire.

§What a caller feels

  • A FETCH is answered by REQUEST_OK (Section 1.5 and Section 9.3). Type 0x18 is reserved, so Connection::respond_ok answers a FETCH, and the first REQUEST_OK on a FETCH’s stream is its FETCH_OK; a later one answers a REQUEST_UPDATE.
  • PAUSED (0x11) carries the pause, 1 for paused (Section 9.19.18). The facade’s Forward choice is written as PAUSED.
  • Overlapping namespace subscriptions are accepted: draft-23 has no PREFIX_OVERLAP (Section 3.6, Section 4.2 and Section 12.3).
  • Session close codes are the draft-23 ones (Section 12.2): EndpointError::session_error_code and Connection::codec_session_error_code give the code each rule’s sentence names.
  • Control messages are bounded by MAX_CONTROL_MESSAGE_SIZE (Section 9.1.8): what this endpoint reads is held to the value its own SETUP advertised, 65535 unless it advertised more, and what it writes after SETUP to the value the server’s SETUP advertised.
  • An Object both received and signalled as not existing makes its Track malformed (Section 12.1). The signals recorded are Prior Group ID Gap and Prior Object ID Gap properties and, on the stream answering a FETCH this endpoint sent, End of Non-Existent Range and the gaps between two entries of a FETCH with no Range Filter (Section 3.2.2).

§What this module does not enforce

Draft-23 lists the parameters a REQUEST_UPDATE (Section 9.5) may carry per kind of request. The codec holds each message to the union of its lists, and this endpoint does not narrow an update to the list for its request’s kind. A REQUEST_OK this endpoint receives is held to its request’s own list (Section 9.3).

Fill fetch streams record nothing about which Objects exist, and neither do the gaps before a FETCH stream’s first entry and after its last: those are measured against Section 3.2.2’s End Location, the LARGEST_OBJECT in a FETCH_OK that can arrive after the stream has ended.

Modules§

connection
Outbound MoQT connection with MoQT framing over QUIC.
endpoint
Draft-23 MoQT endpoint: the session and per-request state machines, and the rules a peer’s messages are held to above the codec.
event
Client event types emitted by a MoQT connection.
fetch
Fetch lifecycle state machine.
fill
Location filters and fill fetch streams, the two things draft-23 asks a subscriber to build byte by byte.
namespace
Subscribe/Publish namespace state machines.
observer
Connection observer trait for receiving structured events.
publish
Publish lifecycle state machine.
session
MoQT session lifecycle management.
subscription
Subscription lifecycle state machine.
track_status
Track status lifecycle state machine.