Skip to main content

Module endpoint

Module endpoint 

Source
Expand description

Draft-23 MoQT endpoint: the session and per-request state machines, and the rules a peer’s messages are held to above the codec.

A SUBSCRIBE, REQUEST_UPDATE or PUBLISH carrying FILL_PARAMETERS (0x23) asks for a fill fetch stream (Section 3.4 and Section 3.4.1). Endpoint::fill_requested records it so an arriving FETCH_HEADER can be told from a fetch’s.

Re-exportsΒ§

use std::collections::HashMap; πŸ”’
use std::collections::HashSet; πŸ”’
use std::collections::VecDeque; πŸ”’
use std::sync::Arc; πŸ”’
use std::sync::Mutex; πŸ”’
use crate::draft23::fetch::FetchError; πŸ”’
use crate::draft23::fetch::FetchState; πŸ”’
use crate::draft23::fetch::FetchStateMachine; πŸ”’
use crate::draft23::fill; πŸ”’
use crate::draft23::fill::FillError; πŸ”’
use crate::draft23::fill::LocationFilter; πŸ”’
use crate::draft23::namespace::NamespaceError; πŸ”’
use crate::draft23::namespace::PublishNamespaceState; πŸ”’
use crate::draft23::namespace::PublishNamespaceStateMachine; πŸ”’
use crate::draft23::namespace::SubscribeNamespaceState; πŸ”’
use crate::draft23::namespace::SubscribeNamespaceStateMachine; πŸ”’
use crate::draft23::publish::PublishError as PublishFlowError; πŸ”’
use crate::draft23::publish::PublishState; πŸ”’
use crate::draft23::publish::PublishStateMachine; πŸ”’
use crate::draft23::session::request_id::RequestIdAllocator; πŸ”’
use crate::draft23::session::request_id::RequestIdError; πŸ”’
use crate::draft23::session::request_id::Role; πŸ”’
use crate::draft23::session::setup; πŸ”’
use crate::draft23::session::setup::SetupError; πŸ”’
use moqtap_codec::draft23::data_stream::FetchEndOfRange; πŸ”’
use moqtap_codec::draft23::data_stream::FetchObject; πŸ”’
use moqtap_codec::draft23::data_stream::GroupOrder; πŸ”’
use moqtap_codec::draft23::data_stream::PriorGaps; πŸ”’
use moqtap_codec::kvp::KvpValue; πŸ”’
use moqtap_codec::object_properties::parse_object_properties; πŸ”’
use moqtap_codec::range_filter; πŸ”’
use moqtap_codec::range_filter::RangeFilterError; πŸ”’
use moqtap_codec::varint::Moqt18; πŸ”’
use moqtap_codec::version::DraftVersion; πŸ”’
use crate::draft23::session::state::SessionError; πŸ”’
use crate::draft23::session::state::SessionState; πŸ”’
use crate::draft23::session::state::SessionStateMachine; πŸ”’
use crate::draft23::subscription::SubscriptionError; πŸ”’
use crate::draft23::subscription::SubscriptionState; πŸ”’
use crate::draft23::subscription::SubscriptionStateMachine; πŸ”’
use crate::draft23::track_status::TrackStatusError; πŸ”’
use crate::draft23::track_status::TrackStatusState; πŸ”’
use crate::draft23::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::draft23::error_codes::PublishDoneStatusCode; πŸ”’
use moqtap_codec::draft23::error_codes::RequestErrorCode; πŸ”’
use moqtap_codec::draft23::error_codes::SessionErrorCode; πŸ”’
use moqtap_codec::draft23::message; πŸ”’
use moqtap_codec::draft23::message::ControlMessage; πŸ”’
use moqtap_codec::draft23::message::Fetch; πŸ”’
use moqtap_codec::draft23::message::GoAway; πŸ”’
use moqtap_codec::draft23::message::MessageType; πŸ”’
use moqtap_codec::draft23::message::Publish; πŸ”’
use moqtap_codec::draft23::message::PublishDone; πŸ”’
use moqtap_codec::draft23::message::PublishNamespace; πŸ”’
use moqtap_codec::draft23::message::PublishSkipped; πŸ”’
use moqtap_codec::draft23::message::PublishStateNotify; πŸ”’
use moqtap_codec::draft23::message::RequestError; πŸ”’
use moqtap_codec::draft23::message::RequestOk; πŸ”’
use moqtap_codec::draft23::message::RequestOkKind; πŸ”’
use moqtap_codec::draft23::message::RequestUpdate; πŸ”’
use moqtap_codec::draft23::message::Setup; πŸ”’
use moqtap_codec::draft23::message::Subscribe; πŸ”’
use moqtap_codec::draft23::message::SubscribeNamespace; πŸ”’
use moqtap_codec::draft23::message::SubscribeOk; πŸ”’
use moqtap_codec::draft23::message::SubscribeTracks; πŸ”’
use moqtap_codec::draft23::message::FILL_PARAMETERS; πŸ”’
use moqtap_codec::kvp::KeyValuePair; πŸ”’
use moqtap_codec::varint::VarInt; πŸ”’
use moqtap_codec::types::*; πŸ”’

StructsΒ§

Endpoint
FetchExistence πŸ”’
What one FETCH stream’s entries say about which of its track’s Objects exist.
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.
TrackExistence πŸ”’
One track’s record of which Objects exist and which do not.

EnumsΒ§

BindingKind πŸ”’
Which of the two sequences Section 3.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.

ConstantsΒ§

MAX_FILTER_RANGES πŸ”’
The MAX_FILTER_RANGES Setup Option, Section 9.1.6.
MAX_REQUEST_UPDATES πŸ”’
The MAX_REQUEST_UPDATES Setup Option, Section 9.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.
fetch_gap πŸ”’
The Locations strictly between two consecutive entries of a FETCH stream, as inclusive ranges.
fetch_location_is_relative πŸ”’
Whether a FETCH’s parameters carry a relative Location filter, Location Filter Type 0x01 (draft-23 Section 9.19.9, Table 6).
note_existence πŸ”’
Record what one received Object says about which Objects exist.
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.