Skip to main content

Module endpoint

Module endpoint 

Source
Expand description

Draft-17 MoQT endpoint.

Major architectural differences from earlier drafts:

  • Unified Setup message (no separate CLIENT_SETUP / SERVER_SETUP).
  • Response messages (SubscribeOk, PublishOk, FetchOk, PublishDone, RequestOk, RequestError) do NOT carry a request_id. Each request opens its own bidirectional stream and its response arrives as the first message on that stream, so the stream itself identifies the request. The transport layer knows which request_id each bidi stream belongs to; callers must supply that request_id via Endpoint::receive_response_on_stream.
  • No Unsubscribe, FetchCancel, MaxRequestId, RequestsBlocked, PublishNamespaceDone, or PublishNamespaceCancel messages.
  • Request-producing messages (Subscribe, Publish, Fetch, PublishNamespace, SubscribeNamespace, TrackStatus, RequestUpdate) gain a required_request_id_delta field.
  • New PublishBlocked message notifies subscribers a publisher is blocked.
  • Namespace and NamespaceDone are unsolicited announcements of namespace suffixes.

Re-exportsΒ§

use std::collections::HashMap; πŸ”’
use std::collections::HashSet; πŸ”’
use std::sync::Arc; πŸ”’
use std::sync::Mutex; πŸ”’
use crate::draft17::fetch::FetchError; πŸ”’
use crate::draft17::fetch::FetchState; πŸ”’
use crate::draft17::fetch::FetchStateMachine; πŸ”’
use crate::draft17::namespace::NamespaceError; πŸ”’
use crate::draft17::namespace::PublishNamespaceState; πŸ”’
use crate::draft17::namespace::PublishNamespaceStateMachine; πŸ”’
use crate::draft17::namespace::SubscribeNamespaceState; πŸ”’
use crate::draft17::namespace::SubscribeNamespaceStateMachine; πŸ”’
use crate::draft17::publish::PublishError as PublishFlowError; πŸ”’
use crate::draft17::publish::PublishState; πŸ”’
use crate::draft17::publish::PublishStateMachine; πŸ”’
use crate::draft17::session::request_id::RequestIdAllocator; πŸ”’
use crate::draft17::session::request_id::RequestIdError; πŸ”’
use crate::draft17::session::request_id::Role; πŸ”’
use crate::draft17::session::setup; πŸ”’
use crate::draft17::session::setup::SetupError; πŸ”’
use crate::draft17::session::state::SessionError; πŸ”’
use crate::draft17::session::state::SessionState; πŸ”’
use crate::draft17::session::state::SessionStateMachine; πŸ”’
use crate::draft17::subscription::SubscriptionError; πŸ”’
use crate::draft17::subscription::SubscriptionState; πŸ”’
use crate::draft17::subscription::SubscriptionStateMachine; πŸ”’
use crate::draft17::track_status::TrackStatusError; πŸ”’
use crate::draft17::track_status::TrackStatusState; πŸ”’
use crate::draft17::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::draft17::error_codes::PublishDoneStatusCode; πŸ”’
use moqtap_codec::draft17::error_codes::RequestErrorCode; πŸ”’
use moqtap_codec::draft17::error_codes::SessionErrorCode; πŸ”’
use moqtap_codec::draft17::message; πŸ”’
use moqtap_codec::draft17::message::ControlMessage; πŸ”’
use moqtap_codec::draft17::message::Fetch; πŸ”’
use moqtap_codec::draft17::message::FetchPayload; πŸ”’
use moqtap_codec::draft17::message::FetchType; πŸ”’
use moqtap_codec::draft17::message::GoAway; πŸ”’
use moqtap_codec::draft17::message::MessageType; πŸ”’
use moqtap_codec::draft17::message::Publish; πŸ”’
use moqtap_codec::draft17::message::PublishBlocked; πŸ”’
use moqtap_codec::draft17::message::PublishDone; πŸ”’
use moqtap_codec::draft17::message::PublishNamespace; πŸ”’
use moqtap_codec::draft17::message::RequestError; πŸ”’
use moqtap_codec::draft17::message::RequestOk; πŸ”’
use moqtap_codec::draft17::message::RequestUpdate; πŸ”’
use moqtap_codec::draft17::message::Setup; πŸ”’
use moqtap_codec::draft17::message::Subscribe; πŸ”’
use moqtap_codec::draft17::message::SubscribeNamespace; πŸ”’
use moqtap_codec::draft17::message::SubscribeOk; πŸ”’
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.

FunctionsΒ§

prefixes_overlap πŸ”’
Whether two namespace prefixes overlap.