pub struct Connection {
transport: Transport,
endpoint: Endpoint,
control_send: Option<FramedSendStream>,
control_recv: Option<FramedRecvStream>,
observer: Option<Box<dyn ConnectionObserver>>,
}Expand description
A live draft-11 MoQT connection over QUIC or WebTransport.
Fields§
§transport: Transport§endpoint: Endpoint§control_send: Option<FramedSendStream>§control_recv: Option<FramedRecvStream>§observer: Option<Box<dyn ConnectionObserver>>Implementations§
Source§impl Connection
impl Connection
Sourcepub async fn connect(
addr: &str,
config: ClientConfig,
) -> Result<Self, ConnectionError>
pub async fn connect( addr: &str, config: ClientConfig, ) -> Result<Self, ConnectionError>
Connect to a draft-11 MoQT server as a client.
Sourceasync fn connect_quic(
addr: &str,
config: &ClientConfig,
) -> Result<Transport, ConnectionError>
async fn connect_quic( addr: &str, config: &ClientConfig, ) -> Result<Transport, ConnectionError>
Establish a raw QUIC connection.
Sourceasync fn connect_webtransport(
_url: &str,
_config: &ClientConfig,
) -> Result<Transport, ConnectionError>
async fn connect_webtransport( _url: &str, _config: &ClientConfig, ) -> Result<Transport, ConnectionError>
Stub for when the webtransport feature is not enabled.
Sourcepub fn set_observer(&mut self, observer: Box<dyn ConnectionObserver>)
pub fn set_observer(&mut self, observer: Box<dyn ConnectionObserver>)
Attach an observer to receive connection events.
Sourcepub fn clear_observer(&mut self)
pub fn clear_observer(&mut self)
Remove the observer.
Sourcefn emit(&self, event: ClientEvent)
fn emit(&self, event: ClientEvent)
Emit an event to the observer, if one is attached.
Sourcepub async fn send_control(
&mut self,
msg: &ControlMessage,
) -> Result<(), ConnectionError>
pub async fn send_control( &mut self, msg: &ControlMessage, ) -> Result<(), ConnectionError>
Send a control message on the control stream.
Sourcepub async fn recv_control(&mut self) -> Result<ControlMessage, ConnectionError>
pub async fn recv_control(&mut self) -> Result<ControlMessage, ConnectionError>
Read the next control message from the control stream.
Sourcepub async fn recv_and_dispatch(
&mut self,
) -> Result<ControlMessage, ConnectionError>
pub async fn recv_and_dispatch( &mut self, ) -> Result<ControlMessage, ConnectionError>
Read and dispatch the next incoming control message through the endpoint state machine. Returns the decoded message for inspection.
Sourcepub async fn subscribe(
&mut self,
track_alias: VarInt,
track_namespace: TrackNamespace,
track_name: Vec<u8>,
subscriber_priority: u8,
group_order: VarInt,
filter_type: VarInt,
) -> Result<VarInt, ConnectionError>
pub async fn subscribe( &mut self, track_alias: VarInt, track_namespace: TrackNamespace, track_name: Vec<u8>, subscriber_priority: u8, group_order: VarInt, filter_type: VarInt, ) -> Result<VarInt, ConnectionError>
Send a SUBSCRIBE and return the allocated request ID.
Sourcepub async fn unsubscribe(
&mut self,
request_id: VarInt,
) -> Result<(), ConnectionError>
pub async fn unsubscribe( &mut self, request_id: VarInt, ) -> Result<(), ConnectionError>
Send an UNSUBSCRIBE for the given request ID.
Sourcepub async fn fetch(
&mut self,
track_namespace: TrackNamespace,
track_name: Vec<u8>,
subscriber_priority: u8,
group_order: VarInt,
start_group: VarInt,
start_object: VarInt,
end_group: VarInt,
end_object: VarInt,
) -> Result<VarInt, ConnectionError>
pub async fn fetch( &mut self, track_namespace: TrackNamespace, track_name: Vec<u8>, subscriber_priority: u8, group_order: VarInt, start_group: VarInt, start_object: VarInt, end_group: VarInt, end_object: VarInt, ) -> Result<VarInt, ConnectionError>
Send a FETCH and return the allocated request ID.
Sourcepub async fn fetch_cancel(
&mut self,
request_id: VarInt,
) -> Result<(), ConnectionError>
pub async fn fetch_cancel( &mut self, request_id: VarInt, ) -> Result<(), ConnectionError>
Send a FETCH_CANCEL for the given request ID.
Sourcepub async fn subscribe_announces(
&mut self,
track_namespace_prefix: TrackNamespace,
) -> Result<VarInt, ConnectionError>
pub async fn subscribe_announces( &mut self, track_namespace_prefix: TrackNamespace, ) -> Result<VarInt, ConnectionError>
Send a SUBSCRIBE_ANNOUNCES. Returns the allocated request ID.
Sourcepub async fn announce(
&mut self,
track_namespace: TrackNamespace,
) -> Result<VarInt, ConnectionError>
pub async fn announce( &mut self, track_namespace: TrackNamespace, ) -> Result<VarInt, ConnectionError>
Send an ANNOUNCE. Returns the allocated request ID.
Sourcepub async fn unannounce(
&mut self,
track_namespace: TrackNamespace,
) -> Result<(), ConnectionError>
pub async fn unannounce( &mut self, track_namespace: TrackNamespace, ) -> Result<(), ConnectionError>
Send an UNANNOUNCE.
Sourcepub async fn track_status_request(
&mut self,
track_namespace: TrackNamespace,
track_name: Vec<u8>,
) -> Result<VarInt, ConnectionError>
pub async fn track_status_request( &mut self, track_namespace: TrackNamespace, track_name: Vec<u8>, ) -> Result<VarInt, ConnectionError>
Send a TRACK_STATUS_REQUEST. Returns the allocated request ID.
Sourcepub async fn open_subgroup_stream(
&self,
header: &AnySubgroupHeader,
) -> Result<FramedSendStream, ConnectionError>
pub async fn open_subgroup_stream( &self, header: &AnySubgroupHeader, ) -> Result<FramedSendStream, ConnectionError>
Open a new unidirectional stream for sending subgroup data.
Sourcepub async fn accept_subgroup_stream(
&self,
) -> Result<(AnySubgroupHeader, FramedRecvStream), ConnectionError>
pub async fn accept_subgroup_stream( &self, ) -> Result<(AnySubgroupHeader, FramedRecvStream), ConnectionError>
Accept an incoming unidirectional data stream and read its subgroup header.
Sourcepub fn send_datagram(
&self,
header: &AnyDatagramHeader,
payload: &[u8],
) -> Result<(), ConnectionError>
pub fn send_datagram( &self, header: &AnyDatagramHeader, payload: &[u8], ) -> Result<(), ConnectionError>
Send an object via datagram.
Sourcepub async fn recv_datagram(
&self,
) -> Result<(AnyDatagramHeader, Bytes), ConnectionError>
pub async fn recv_datagram( &self, ) -> Result<(AnyDatagramHeader, Bytes), ConnectionError>
Receive a datagram and decode its header.
Sourcepub fn endpoint_mut(&mut self) -> &mut Endpoint
pub fn endpoint_mut(&mut self) -> &mut Endpoint
Mutable access to the endpoint state machine.
Sourcepub fn negotiated_version(&self) -> Option<VarInt>
pub fn negotiated_version(&self) -> Option<VarInt>
Get the negotiated MoQT version.