Trait interceptor::Interceptor
source · pub trait Interceptor {
// Required methods
fn bind_rtcp_reader<'life0, 'async_trait>(
&'life0 self,
reader: Arc<dyn RTCPReader + Send + Sync>
) -> Pin<Box<dyn Future<Output = Arc<dyn RTCPReader + Send + Sync>> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait;
fn bind_rtcp_writer<'life0, 'async_trait>(
&'life0 self,
writer: Arc<dyn RTCPWriter + Send + Sync>
) -> Pin<Box<dyn Future<Output = Arc<dyn RTCPWriter + Send + Sync>> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait;
fn bind_local_stream<'life0, 'life1, 'async_trait>(
&'life0 self,
info: &'life1 StreamInfo,
writer: Arc<dyn RTPWriter + Send + Sync>
) -> Pin<Box<dyn Future<Output = Arc<dyn RTPWriter + Send + Sync>> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait;
fn unbind_local_stream<'life0, 'life1, 'async_trait>(
&'life0 self,
info: &'life1 StreamInfo
) -> Pin<Box<dyn Future<Output = ()> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait;
fn bind_remote_stream<'life0, 'life1, 'async_trait>(
&'life0 self,
info: &'life1 StreamInfo,
reader: Arc<dyn RTPReader + Send + Sync>
) -> Pin<Box<dyn Future<Output = Arc<dyn RTPReader + Send + Sync>> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait;
fn unbind_remote_stream<'life0, 'life1, 'async_trait>(
&'life0 self,
info: &'life1 StreamInfo
) -> Pin<Box<dyn Future<Output = ()> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait;
fn close<'life0, 'async_trait>(
&'life0 self
) -> Pin<Box<dyn Future<Output = Result<(), Error>> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait;
}
Expand description
Interceptor can be used to add functionality to you PeerConnections by modifying any incoming/outgoing rtp/rtcp packets, or sending your own packets as needed.
Required Methods§
sourcefn bind_rtcp_reader<'life0, 'async_trait>(
&'life0 self,
reader: Arc<dyn RTCPReader + Send + Sync>
) -> Pin<Box<dyn Future<Output = Arc<dyn RTCPReader + Send + Sync>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn bind_rtcp_reader<'life0, 'async_trait>(
&'life0 self,
reader: Arc<dyn RTCPReader + Send + Sync>
) -> Pin<Box<dyn Future<Output = Arc<dyn RTCPReader + Send + Sync>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
bind_rtcp_reader lets you modify any incoming RTCP packets. It is called once per sender/receiver, however this might change in the future. The returned method will be called once per packet batch.
sourcefn bind_rtcp_writer<'life0, 'async_trait>(
&'life0 self,
writer: Arc<dyn RTCPWriter + Send + Sync>
) -> Pin<Box<dyn Future<Output = Arc<dyn RTCPWriter + Send + Sync>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn bind_rtcp_writer<'life0, 'async_trait>(
&'life0 self,
writer: Arc<dyn RTCPWriter + Send + Sync>
) -> Pin<Box<dyn Future<Output = Arc<dyn RTCPWriter + Send + Sync>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
bind_rtcp_writer lets you modify any outgoing RTCP packets. It is called once per PeerConnection. The returned method will be called once per packet batch.
sourcefn bind_local_stream<'life0, 'life1, 'async_trait>(
&'life0 self,
info: &'life1 StreamInfo,
writer: Arc<dyn RTPWriter + Send + Sync>
) -> Pin<Box<dyn Future<Output = Arc<dyn RTPWriter + Send + Sync>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn bind_local_stream<'life0, 'life1, 'async_trait>(
&'life0 self,
info: &'life1 StreamInfo,
writer: Arc<dyn RTPWriter + Send + Sync>
) -> Pin<Box<dyn Future<Output = Arc<dyn RTPWriter + Send + Sync>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
bind_local_stream lets you modify any outgoing RTP packets. It is called once for per LocalStream. The returned method will be called once per rtp packet.
sourcefn unbind_local_stream<'life0, 'life1, 'async_trait>(
&'life0 self,
info: &'life1 StreamInfo
) -> Pin<Box<dyn Future<Output = ()> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn unbind_local_stream<'life0, 'life1, 'async_trait>(
&'life0 self,
info: &'life1 StreamInfo
) -> Pin<Box<dyn Future<Output = ()> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
unbind_local_stream is called when the Stream is removed. It can be used to clean up any data related to that track.
sourcefn bind_remote_stream<'life0, 'life1, 'async_trait>(
&'life0 self,
info: &'life1 StreamInfo,
reader: Arc<dyn RTPReader + Send + Sync>
) -> Pin<Box<dyn Future<Output = Arc<dyn RTPReader + Send + Sync>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn bind_remote_stream<'life0, 'life1, 'async_trait>(
&'life0 self,
info: &'life1 StreamInfo,
reader: Arc<dyn RTPReader + Send + Sync>
) -> Pin<Box<dyn Future<Output = Arc<dyn RTPReader + Send + Sync>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
bind_remote_stream lets you modify any incoming RTP packets. It is called once for per RemoteStream. The returned method will be called once per rtp packet.
sourcefn unbind_remote_stream<'life0, 'life1, 'async_trait>(
&'life0 self,
info: &'life1 StreamInfo
) -> Pin<Box<dyn Future<Output = ()> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn unbind_remote_stream<'life0, 'life1, 'async_trait>(
&'life0 self,
info: &'life1 StreamInfo
) -> Pin<Box<dyn Future<Output = ()> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
unbind_remote_stream is called when the Stream is removed. It can be used to clean up any data related to that track.