pub struct ChainedHandler<H1, H2> { /* private fields */ }Expand description
A handler wrapper that chains multiple handlers
Implementations§
Source§impl<H1, H2> ChainedHandler<H1, H2>where
H1: RtmpHandler,
H2: RtmpHandler,
impl<H1, H2> ChainedHandler<H1, H2>where
H1: RtmpHandler,
H2: RtmpHandler,
Trait Implementations§
Source§impl<H1, H2> RtmpHandler for ChainedHandler<H1, H2>where
H1: RtmpHandler,
H2: RtmpHandler,
impl<H1, H2> RtmpHandler for ChainedHandler<H1, H2>where
H1: RtmpHandler,
H2: RtmpHandler,
Source§fn on_connection<'life0, 'life1, 'async_trait>(
&'life0 self,
ctx: &'life1 SessionContext,
) -> Pin<Box<dyn Future<Output = bool> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn on_connection<'life0, 'life1, 'async_trait>(
&'life0 self,
ctx: &'life1 SessionContext,
) -> Pin<Box<dyn Future<Output = bool> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Called when a new TCP connection is established Read more
Source§fn on_connect<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
ctx: &'life1 SessionContext,
params: &'life2 ConnectParams,
) -> Pin<Box<dyn Future<Output = AuthResult> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
fn on_connect<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
ctx: &'life1 SessionContext,
params: &'life2 ConnectParams,
) -> Pin<Box<dyn Future<Output = AuthResult> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
Called on RTMP ‘connect’ command Read more
Source§fn on_publish<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
ctx: &'life1 SessionContext,
params: &'life2 PublishParams,
) -> Pin<Box<dyn Future<Output = AuthResult> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
fn on_publish<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
ctx: &'life1 SessionContext,
params: &'life2 PublishParams,
) -> Pin<Box<dyn Future<Output = AuthResult> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
Called on ‘publish’ command Read more
Source§fn on_disconnect<'life0, 'life1, 'async_trait>(
&'life0 self,
ctx: &'life1 SessionContext,
) -> Pin<Box<dyn Future<Output = ()> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn on_disconnect<'life0, 'life1, 'async_trait>(
&'life0 self,
ctx: &'life1 SessionContext,
) -> Pin<Box<dyn Future<Output = ()> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Called when the connection closes
Source§fn on_handshake_complete<'life0, 'life1, 'async_trait>(
&'life0 self,
_ctx: &'life1 SessionContext,
) -> Pin<Box<dyn Future<Output = ()> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn on_handshake_complete<'life0, 'life1, 'async_trait>(
&'life0 self,
_ctx: &'life1 SessionContext,
) -> Pin<Box<dyn Future<Output = ()> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Called after successful handshake, before connect command
Source§fn on_fc_publish<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
_ctx: &'life1 SessionContext,
_stream_key: &'life2 str,
) -> Pin<Box<dyn Future<Output = AuthResult> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
fn on_fc_publish<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
_ctx: &'life1 SessionContext,
_stream_key: &'life2 str,
) -> Pin<Box<dyn Future<Output = AuthResult> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
Called on FCPublish command (OBS/Twitch compatibility) Read more
Source§fn on_play<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
_ctx: &'life1 SessionContext,
_params: &'life2 PlayParams,
) -> Pin<Box<dyn Future<Output = AuthResult> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
fn on_play<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
_ctx: &'life1 SessionContext,
_params: &'life2 PlayParams,
) -> Pin<Box<dyn Future<Output = AuthResult> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
Called on ‘play’ command Read more
Source§fn on_metadata<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
_ctx: &'life1 StreamContext,
_metadata: &'life2 HashMap<String, AmfValue>,
) -> Pin<Box<dyn Future<Output = ()> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
fn on_metadata<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
_ctx: &'life1 StreamContext,
_metadata: &'life2 HashMap<String, AmfValue>,
) -> Pin<Box<dyn Future<Output = ()> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
Called when stream metadata is received (@setDataFrame/onMetaData)
Source§fn on_media_tag<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
_ctx: &'life1 StreamContext,
_tag: &'life2 FlvTag,
) -> Pin<Box<dyn Future<Output = bool> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
fn on_media_tag<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
_ctx: &'life1 StreamContext,
_tag: &'life2 FlvTag,
) -> Pin<Box<dyn Future<Output = bool> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
Called for each raw FLV tag (when MediaDeliveryMode includes RawFlv) Read more
Source§fn on_video_frame<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
_ctx: &'life1 StreamContext,
_frame: &'life2 H264Data,
_timestamp: u32,
) -> Pin<Box<dyn Future<Output = ()> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
fn on_video_frame<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
_ctx: &'life1 StreamContext,
_frame: &'life2 H264Data,
_timestamp: u32,
) -> Pin<Box<dyn Future<Output = ()> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
Called for each video frame (when MediaDeliveryMode includes ParsedFrames)
Source§fn on_audio_frame<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
_ctx: &'life1 StreamContext,
_frame: &'life2 AacData,
_timestamp: u32,
) -> Pin<Box<dyn Future<Output = ()> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
fn on_audio_frame<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
_ctx: &'life1 StreamContext,
_frame: &'life2 AacData,
_timestamp: u32,
) -> Pin<Box<dyn Future<Output = ()> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
Called for each audio frame (when MediaDeliveryMode includes ParsedFrames)
Source§fn on_keyframe<'life0, 'life1, 'async_trait>(
&'life0 self,
_ctx: &'life1 StreamContext,
_timestamp: u32,
) -> Pin<Box<dyn Future<Output = ()> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn on_keyframe<'life0, 'life1, 'async_trait>(
&'life0 self,
_ctx: &'life1 StreamContext,
_timestamp: u32,
) -> Pin<Box<dyn Future<Output = ()> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Called when a keyframe is received
Source§fn on_publish_stop<'life0, 'life1, 'async_trait>(
&'life0 self,
_ctx: &'life1 StreamContext,
) -> Pin<Box<dyn Future<Output = ()> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn on_publish_stop<'life0, 'life1, 'async_trait>(
&'life0 self,
_ctx: &'life1 StreamContext,
) -> Pin<Box<dyn Future<Output = ()> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Called when the publish stream ends
Source§fn on_play_stop<'life0, 'life1, 'async_trait>(
&'life0 self,
_ctx: &'life1 StreamContext,
) -> Pin<Box<dyn Future<Output = ()> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn on_play_stop<'life0, 'life1, 'async_trait>(
&'life0 self,
_ctx: &'life1 StreamContext,
) -> Pin<Box<dyn Future<Output = ()> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Called when the play stream ends
Source§fn on_pause<'life0, 'life1, 'async_trait>(
&'life0 self,
_ctx: &'life1 StreamContext,
) -> Pin<Box<dyn Future<Output = ()> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn on_pause<'life0, 'life1, 'async_trait>(
&'life0 self,
_ctx: &'life1 StreamContext,
) -> Pin<Box<dyn Future<Output = ()> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Called when a subscriber pauses playback
Source§fn on_unpause<'life0, 'life1, 'async_trait>(
&'life0 self,
_ctx: &'life1 StreamContext,
) -> Pin<Box<dyn Future<Output = ()> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn on_unpause<'life0, 'life1, 'async_trait>(
&'life0 self,
_ctx: &'life1 StreamContext,
) -> Pin<Box<dyn Future<Output = ()> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Called when a subscriber resumes playback
Source§fn media_delivery_mode(&self) -> MediaDeliveryMode
fn media_delivery_mode(&self) -> MediaDeliveryMode
Get the media delivery mode for this handler
Source§fn on_stats_update<'life0, 'life1, 'async_trait>(
&'life0 self,
_ctx: &'life1 SessionContext,
) -> Pin<Box<dyn Future<Output = ()> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn on_stats_update<'life0, 'life1, 'async_trait>(
&'life0 self,
_ctx: &'life1 SessionContext,
) -> Pin<Box<dyn Future<Output = ()> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Called periodically with stats update
Auto Trait Implementations§
impl<H1, H2> Freeze for ChainedHandler<H1, H2>
impl<H1, H2> RefUnwindSafe for ChainedHandler<H1, H2>where
H1: RefUnwindSafe,
H2: RefUnwindSafe,
impl<H1, H2> Send for ChainedHandler<H1, H2>
impl<H1, H2> Sync for ChainedHandler<H1, H2>
impl<H1, H2> Unpin for ChainedHandler<H1, H2>
impl<H1, H2> UnwindSafe for ChainedHandler<H1, H2>where
H1: UnwindSafe,
H2: UnwindSafe,
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more