Skip to main content

Module endpoint

Module endpoint 

Source
Expand description

Draft-19 MoQT endpoint.

Major changes from draft-18:

  • GoAway drops the request_id field entirely; the control-stream and request-stream forms are now identical on the wire.
  • PublishBlocked renamed to PublishSkipped (still type 0x0F, wire identical).
  • GROUP_ORDER (parameter 0x22) moves from PUBLISH_OK to SUBSCRIBE_TRACKS.
  • New Range Filter parameters (SUBGROUP_FILTER 0x25, OBJECTID_FILTER 0x26, PRIORITY_FILTER 0x27, OBJECT_PROPERTY_FILTER 0x28, TRACK_PROPERTY_FILTER 0x29) may appear on SUBSCRIBE / FETCH / SUBSCRIBE_TRACKS / REQUEST_UPDATE.
  • RequestError adds CONFLICTING_FILTERS (0x35) and INVALID_FILTER (0x36); DUPLICATE_SUBSCRIPTION (0x19) is removed.

Re-exportsΒ§

use std::collections::HashMap; πŸ”’
use std::collections::HashSet; πŸ”’
use std::sync::Arc; πŸ”’
use std::sync::Mutex; πŸ”’
use crate::draft19::fetch::FetchError; πŸ”’
use crate::draft19::fetch::FetchState; πŸ”’
use crate::draft19::fetch::FetchStateMachine; πŸ”’
use crate::draft19::namespace::NamespaceError; πŸ”’
use crate::draft19::namespace::PublishNamespaceState; πŸ”’
use crate::draft19::namespace::PublishNamespaceStateMachine; πŸ”’
use crate::draft19::namespace::SubscribeNamespaceState; πŸ”’
use crate::draft19::namespace::SubscribeNamespaceStateMachine; πŸ”’
use crate::draft19::publish::PublishError as PublishFlowError; πŸ”’
use crate::draft19::publish::PublishState; πŸ”’
use crate::draft19::publish::PublishStateMachine; πŸ”’
use crate::draft19::session::request_id::RequestIdAllocator; πŸ”’
use crate::draft19::session::request_id::RequestIdError; πŸ”’
use crate::draft19::session::request_id::Role; πŸ”’
use crate::draft19::session::setup; πŸ”’
use crate::draft19::session::setup::SetupError; πŸ”’
use moqtap_codec::kvp::KvpValue; πŸ”’
use moqtap_codec::range_filter; πŸ”’
use moqtap_codec::range_filter::RangeFilterError; πŸ”’
use moqtap_codec::varint::Moqt18; πŸ”’
use crate::draft19::session::state::SessionError; πŸ”’
use crate::draft19::session::state::SessionState; πŸ”’
use crate::draft19::session::state::SessionStateMachine; πŸ”’
use crate::draft19::subscription::SubscriptionError; πŸ”’
use crate::draft19::subscription::SubscriptionState; πŸ”’
use crate::draft19::subscription::SubscriptionStateMachine; πŸ”’
use crate::draft19::track_status::TrackStatusError; πŸ”’
use crate::draft19::track_status::TrackStatusState; πŸ”’
use crate::draft19::track_status::TrackStatusStateMachine; πŸ”’
use crate::malformed_tracks::MalformedTrackCondition; πŸ”’
use crate::malformed_tracks::MalformedTracks; πŸ”’
use crate::track_locations::ObjectLocation; πŸ”’
use crate::track_locations::ObjectRole; πŸ”’
use crate::track_locations::TrackLocations; πŸ”’
use crate::track_locations::TrackObjects; πŸ”’
use moqtap_codec::draft19::error_codes::PublishDoneStatusCode; πŸ”’
use moqtap_codec::draft19::error_codes::RequestErrorCode; πŸ”’
use moqtap_codec::draft19::error_codes::SessionErrorCode; πŸ”’
use moqtap_codec::draft19::message; πŸ”’
use moqtap_codec::draft19::message::ControlMessage; πŸ”’
use moqtap_codec::draft19::message::Fetch; πŸ”’
use moqtap_codec::draft19::message::FetchPayload; πŸ”’
use moqtap_codec::draft19::message::FetchType; πŸ”’
use moqtap_codec::draft19::message::GoAway; πŸ”’
use moqtap_codec::draft19::message::MessageType; πŸ”’
use moqtap_codec::draft19::message::Publish; πŸ”’
use moqtap_codec::draft19::message::PublishDone; πŸ”’
use moqtap_codec::draft19::message::PublishNamespace; πŸ”’
use moqtap_codec::draft19::message::PublishSkipped; πŸ”’
use moqtap_codec::draft19::message::RequestError; πŸ”’
use moqtap_codec::draft19::message::RequestOk; πŸ”’
use moqtap_codec::draft19::message::RequestUpdate; πŸ”’
use moqtap_codec::draft19::message::Setup; πŸ”’
use moqtap_codec::draft19::message::Subscribe; πŸ”’
use moqtap_codec::draft19::message::SubscribeNamespace; πŸ”’
use moqtap_codec::draft19::message::SubscribeOk; πŸ”’
use moqtap_codec::draft19::message::SubscribeTracks; πŸ”’
use moqtap_codec::kvp::KeyValuePair; πŸ”’
use moqtap_codec::varint::VarInt; πŸ”’
use moqtap_codec::types::*; πŸ”’

StructsΒ§

Endpoint
FetchTrack πŸ”’
The track one fetch is for, which the fetch’s own state machine does not hold.
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.