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
- Fetch
Existence π - What one FETCH streamβs entries say about which of its trackβs Objects exist.
- Fetch
Track π - The track one fetch is for, which the fetchβs own state machine does not hold.
- Fill
Streams π - 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.
- Track
Binding π - A Track Alias the peer has attached to a Full Track Name, and the request whose lifetime the attachment follows.
- Track
Existence π - One trackβs record of which Objects exist and which do not.
EnumsΒ§
- Binding
Kind π - 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.
- Endpoint
Error - Errors that can occur during endpoint operations.
- Filter
Rejection - 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
Nonewhen it asks for no such move.