Skip to main content

Module endpoint

Module endpoint 

Source
Expand description

Draft-20 MoQT endpoint.

Major changes from draft-19:

  • FETCH lost its Fetch Type and with it the Standalone and Joining Fetch structures (Section 10.13). Track Namespace and Track Name are inline fields, the range travels in the LOCATION_FILTER parameter, and Endpoint::fetch therefore takes a parameter list where draft-19’s took four location varints. joining_fetch and absolute_joining_fetch are gone, as is INVALID_JOINING_REQUEST_ID (REQUEST_ERROR 0x32) and every rule this endpoint enforced with it.
  • Fill fetch streams replace the joining fetch (Sections 5.1.3 and 5.1.3.1). A SUBSCRIBE or REQUEST_UPDATE carrying FILL_PARAMETERS (0x23) asks the publisher for a unidirectional stream that opens with a FETCH_HEADER carrying the subscription’s Request ID. This endpoint records the request in Endpoint::fill_requested so an arriving FETCH_HEADER can be told from a fetch’s, and counts the streams so a PUBLISH_DONE’s Stream Count can include them.
  • PUBLISH_STATE_NOTIFY (0x22) is new (Section 10.10): unilateral, from the publisher, on a subscription’s stream, answered with nothing and explicitly outside the MAX_REQUEST_UPDATES ceiling.
  • Ranges are inclusive at both ends (Sections 5.1.2, 10.13, 10.14), so no end location in this module carries draft-19’s + 1.
  • INCLUDE_PROPERTIES (0x35) is new; SUBSCRIPTION_ENDED (PUBLISH_DONE 0x3) and VERSION_NEGOTIATION_FAILED (session 0x15) are unassigned.
  • Six parameters dropped PUBLISH_OK from their scope and several gained PUBLISH; only EXPIRES still names PUBLISH_OK. The table that decides it lives in the codec.

Structs§

Endpoint
FetchTrack 🔒
The track one fetch is for, which the fetch’s own state machine does not hold.
FillStreams 🔒
What one subscription’s fill fetch streams amount to, from the point of view of an endpoint that has to attribute an arriving FETCH_HEADER and count the streams a PUBLISH_DONE reports.
TrackBinding 🔒
A Track Alias the peer has attached to a Full Track Name, and the request whose lifetime the attachment follows.

Enums§

BindingKind 🔒
Which of the two sequences Section 5.1 names established the subscription that owns a binding, and so which state machine says whether it still has one.
EndpointError
Errors that can occur during endpoint operations.
FilterRejection
Why a peer’s request must be answered with REQUEST_ERROR and INVALID_FILTER.

Constants§

MAX_FILTER_RANGES 🔒
The MAX_FILTER_RANGES Setup Option, Section 10.3.1.6.
MAX_REQUEST_UPDATES 🔒
The MAX_REQUEST_UPDATES Setup Option, Section 10.3.1.7.
TRACK_NAMESPACE_PREFIX 🔒
Parameter Type of TRACK_NAMESPACE_PREFIX.

Functions§

apply_filter_update 🔒
Apply a REQUEST_UPDATE’s filter parameters to the set already in force.
prefixes_overlap 🔒
Whether two namespace prefixes overlap.
range_filter_parameters 🔒
The Range Filter parameters in parameters, dropping the removals.
request_parameters 🔒
The Message Parameters a request carries, or nothing for a message that is not a request.
setup_varint 🔒
Read a Setup Option’s value as a variable-length integer, or 0 if it is absent.
updated_prefix 🔒
The Track Namespace Prefix a REQUEST_UPDATE asks a namespace subscription to move to, and None when it asks for no such move.