Expand description
Draft-17 MoQT endpoint.
Major architectural differences from earlier drafts:
- Unified
Setupmessage (no separate CLIENT_SETUP / SERVER_SETUP). - Response messages (
SubscribeOk,PublishOk,FetchOk,PublishDone,RequestOk,RequestError) do NOT carry arequest_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 whichrequest_ideach bidi stream belongs to; callers must supply thatrequest_idviaEndpoint::receive_response_on_stream. - No
Unsubscribe,FetchCancel,MaxRequestId,RequestsBlocked,PublishNamespaceDone, orPublishNamespaceCancelmessages. - Request-producing messages (
Subscribe,Publish,Fetch,PublishNamespace,SubscribeNamespace,TrackStatus,RequestUpdate) gain arequired_request_id_deltafield. - New
PublishBlockedmessage notifies subscribers a publisher is blocked. NamespaceandNamespaceDoneare 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
- Fetch
Track π - The track one fetch is for, which the fetchβs own state machine does not hold.
- Track
Binding π - A Track Alias the peer has attached to a Full Track Name, and the request whose lifetime the attachment follows.
EnumsΒ§
- Binding
Kind π - 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.
- Endpoint
Error - Errors that can occur during endpoint operations.
FunctionsΒ§
- prefixes_
overlap π - Whether two namespace prefixes overlap.