pub struct PlainTransport { /* private fields */ }
Expand description
A plain transport represents a network path through which RTP, RTCP (optionally secured with SRTP) and SCTP (DataChannel) is transmitted.
Implementations§
Source§impl PlainTransport
impl PlainTransport
Sourcepub async fn connect(
&self,
remote_parameters: PlainTransportRemoteParameters,
) -> Result<(), RequestError>
pub async fn connect( &self, remote_parameters: PlainTransportRemoteParameters, ) -> Result<(), RequestError>
Provide the PlainTransport
with remote parameters.
§Notes on usage
- If
comedia
is enabled in this plain transport and SRTP is not,connect()
must not be called. - If
comedia
is enabled and SRTP is also enabled (enable_srtp
was set in theRouter::create_plain_transport
options) thenconnect()
must be called with just the remotesrtp_parameters
. - If
comedia
is disabled,connect()
must be eventually called with remoteip
,port
, optionalrtcp_port
(if RTCP-mux is not enabled) and optionalsrtp_parameters
(if SRTP is enabled).
§Examples
use mediasoup::plain_transport::PlainTransportRemoteParameters;
// Calling connect() on a PlainTransport created with comedia and rtcp_mux set.
plain_transport
.connect(PlainTransportRemoteParameters {
ip: Some("1.2.3.4".parse().unwrap()),
port: Some(9998),
rtcp_port: None,
srtp_parameters: None,
})
.await?;
use mediasoup::plain_transport::PlainTransportRemoteParameters;
// Calling connect() on a PlainTransport created with comedia unset and rtcp_mux
// also unset.
plain_transport
.connect(PlainTransportRemoteParameters {
ip: Some("1.2.3.4".parse().unwrap()),
port: Some(9998),
rtcp_port: Some(9999),
srtp_parameters: None,
})
.await?;
use mediasoup::plain_transport::PlainTransportRemoteParameters;
use mediasoup::srtp_parameters::{SrtpParameters, SrtpCryptoSuite};
// Calling connect() on a PlainTransport created with comedia set and
// enable_srtp enabled.
plain_transport
.connect(PlainTransportRemoteParameters {
ip: None,
port: None,
rtcp_port: None,
srtp_parameters: Some(SrtpParameters {
crypto_suite: SrtpCryptoSuite::AesCm128HmacSha180,
key_base64: "ZnQ3eWJraDg0d3ZoYzM5cXN1Y2pnaHU5NWxrZTVv".to_string(),
}),
})
.await?;
use mediasoup::plain_transport::PlainTransportRemoteParameters;
use mediasoup::srtp_parameters::{SrtpParameters, SrtpCryptoSuite};
// Calling connect() on a PlainTransport created with comedia unset,
// rtcp_mux set and enableSrtp enabled.
plain_transport
.connect(PlainTransportRemoteParameters {
ip: Some("1.2.3.4".parse().unwrap()),
port: Some(9998),
rtcp_port: None,
srtp_parameters: Some(SrtpParameters {
crypto_suite: SrtpCryptoSuite::AesCm128HmacSha180,
key_base64: "ZnQ3eWJraDg0d3ZoYzM5cXN1Y2pnaHU5NWxrZTVv".to_string(),
}),
})
.await?;
Sourcepub async fn set_max_incoming_bitrate(
&self,
bitrate: u32,
) -> Result<(), RequestError>
pub async fn set_max_incoming_bitrate( &self, bitrate: u32, ) -> Result<(), RequestError>
Set maximum incoming bitrate for media streams sent by the remote endpoint over this transport.
Sourcepub fn tuple(&self) -> TransportTuple
pub fn tuple(&self) -> TransportTuple
The transport tuple. If RTCP-mux is enabled (rtcp_mux
is set), this tuple refers to both
RTP and RTCP.
§Notes on usage
- Once the plain transport is created,
transport.tuple()
will contain information about itslocal_address
,local_port
andprotocol
. - Information about
remote_ip
andremote_port
will be set:- after calling
connect()
method, or - via dynamic remote address detection when using
comedia
mode.
- after calling
Sourcepub fn rtcp_tuple(&self) -> Option<TransportTuple>
pub fn rtcp_tuple(&self) -> Option<TransportTuple>
The transport tuple for RTCP. If RTCP-mux is enabled (rtcp_mux
is set), its value is
None
.
§Notes on usage
- Once the plain transport is created (with RTCP-mux disabled),
transport.rtcp_tuple()
will contain information about itslocal_address
,local_port
andprotocol
. - Information about
remote_ip
andremote_port
will be set:- after calling
connect()
method, or - via dynamic remote address detection when using
comedia
mode.
- after calling
Sourcepub fn sctp_parameters(&self) -> Option<SctpParameters>
pub fn sctp_parameters(&self) -> Option<SctpParameters>
Current SCTP state. Or None
if SCTP is not enabled.
Sourcepub fn sctp_state(&self) -> Option<SctpState>
pub fn sctp_state(&self) -> Option<SctpState>
Current SCTP state. Or None
if SCTP is not enabled.
Sourcepub fn srtp_parameters(&self) -> Option<SrtpParameters>
pub fn srtp_parameters(&self) -> Option<SrtpParameters>
Local SRTP parameters representing the crypto suite and key material used to encrypt sending
RTP and SRTP. Note that, if comedia
mode is set, these local SRTP parameters may change
after calling connect()
with the remote SRTP parameters (to override the local SRTP crypto
suite with the one given in connect()
).
Sourcepub fn on_tuple<F: Fn(&TransportTuple) + Send + Sync + 'static>(
&self,
callback: F,
) -> HandlerId
pub fn on_tuple<F: Fn(&TransportTuple) + Send + Sync + 'static>( &self, callback: F, ) -> HandlerId
Callback is called after the remote RTP origin has been discovered. Only if comedia
mode
was set.
Sourcepub fn on_rtcp_tuple<F: Fn(&TransportTuple) + Send + Sync + 'static>(
&self,
callback: F,
) -> HandlerId
pub fn on_rtcp_tuple<F: Fn(&TransportTuple) + Send + Sync + 'static>( &self, callback: F, ) -> HandlerId
Callback is called after the remote RTCP origin has been discovered. Only if comedia
mode
was set and rtcp_mux
was not.
Sourcepub fn on_sctp_state_change<F: Fn(SctpState) + Send + Sync + 'static>(
&self,
callback: F,
) -> HandlerId
pub fn on_sctp_state_change<F: Fn(SctpState) + Send + Sync + 'static>( &self, callback: F, ) -> HandlerId
Callback is called when the transport SCTP state changes.
Sourcepub fn downgrade(&self) -> WeakPlainTransport
pub fn downgrade(&self) -> WeakPlainTransport
Downgrade PlainTransport
to WeakPlainTransport
instance.
Trait Implementations§
Source§impl Clone for PlainTransport
impl Clone for PlainTransport
Source§fn clone(&self) -> PlainTransport
fn clone(&self) -> PlainTransport
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moreSource§impl Debug for PlainTransport
impl Debug for PlainTransport
Source§impl Transport for PlainTransport
impl Transport for PlainTransport
Source§fn id(&self) -> TransportId
fn id(&self) -> TransportId
Source§fn produce<'life0, 'async_trait>(
&'life0 self,
producer_options: ProducerOptions,
) -> Pin<Box<dyn Future<Output = Result<Producer, ProduceError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn produce<'life0, 'async_trait>(
&'life0 self,
producer_options: ProducerOptions,
) -> Pin<Box<dyn Future<Output = Result<Producer, ProduceError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Source§fn consume<'life0, 'async_trait>(
&'life0 self,
consumer_options: ConsumerOptions,
) -> Pin<Box<dyn Future<Output = Result<Consumer, ConsumeError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn consume<'life0, 'async_trait>(
&'life0 self,
consumer_options: ConsumerOptions,
) -> Pin<Box<dyn Future<Output = Result<Consumer, ConsumeError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Source§fn produce_data<'life0, 'async_trait>(
&'life0 self,
data_producer_options: DataProducerOptions,
) -> Pin<Box<dyn Future<Output = Result<DataProducer, ProduceDataError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn produce_data<'life0, 'async_trait>(
&'life0 self,
data_producer_options: DataProducerOptions,
) -> Pin<Box<dyn Future<Output = Result<DataProducer, ProduceDataError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
DataChannel
in WebRTC) or can be directly sent from the Rust application if the transport is a
DirectTransport
. Read moreSource§fn consume_data<'life0, 'async_trait>(
&'life0 self,
data_consumer_options: DataConsumerOptions,
) -> Pin<Box<dyn Future<Output = Result<DataConsumer, ConsumeDataError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn consume_data<'life0, 'async_trait>(
&'life0 self,
data_consumer_options: DataConsumerOptions,
) -> Pin<Box<dyn Future<Output = Result<DataConsumer, ConsumeDataError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
DataChannel
in WebRTC)
or directly to the Rust process if the transport is a
DirectTransport
. Read moreSource§fn enable_trace_event<'life0, 'async_trait>(
&'life0 self,
types: Vec<TransportTraceEventType>,
) -> Pin<Box<dyn Future<Output = Result<(), RequestError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn enable_trace_event<'life0, 'async_trait>(
&'life0 self,
types: Vec<TransportTraceEventType>,
) -> Pin<Box<dyn Future<Output = Result<(), RequestError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Source§fn on_new_producer(
&self,
callback: Arc<dyn Fn(&Producer) + Send + Sync + 'static>,
) -> HandlerId
fn on_new_producer( &self, callback: Arc<dyn Fn(&Producer) + Send + Sync + 'static>, ) -> HandlerId
Source§fn on_new_consumer(
&self,
callback: Arc<dyn Fn(&Consumer) + Send + Sync + 'static>,
) -> HandlerId
fn on_new_consumer( &self, callback: Arc<dyn Fn(&Consumer) + Send + Sync + 'static>, ) -> HandlerId
Source§fn on_new_data_producer(
&self,
callback: Arc<dyn Fn(&DataProducer) + Send + Sync + 'static>,
) -> HandlerId
fn on_new_data_producer( &self, callback: Arc<dyn Fn(&DataProducer) + Send + Sync + 'static>, ) -> HandlerId
Source§fn on_new_data_consumer(
&self,
callback: Arc<dyn Fn(&DataConsumer) + Send + Sync + 'static>,
) -> HandlerId
fn on_new_data_consumer( &self, callback: Arc<dyn Fn(&DataConsumer) + Send + Sync + 'static>, ) -> HandlerId
Source§fn on_trace(
&self,
callback: Arc<dyn Fn(&TransportTraceEventData) + Send + Sync + 'static>,
) -> HandlerId
fn on_trace( &self, callback: Arc<dyn Fn(&TransportTraceEventData) + Send + Sync + 'static>, ) -> HandlerId
Source§fn on_router_close(
&self,
callback: Box<dyn FnOnce() + Send + 'static>,
) -> HandlerId
fn on_router_close( &self, callback: Box<dyn FnOnce() + Send + 'static>, ) -> HandlerId
on_transport_close
callbacks are also called on all
its producers and consumers.