pub struct RtmpRoute { /* private fields */ }Expand description
An RTMP push-ingest route: binds listen once and accepts publishers
against it, gated by an optional app/stream_key (see
Self::with_app/Self::with_stream_key). Replaces the pre-#805
task-4 RtmpSource; run_rtmp is the new, Listener-backed drive loop.
Implementations§
Source§impl RtmpRoute
impl RtmpRoute
Sourcepub fn new(name: impl Into<String>, listen: impl Into<String>) -> Self
pub fn new(name: impl Into<String>, listen: impl Into<String>) -> Self
Build a route listening on listen (e.g. "0.0.0.0:1935", or
"127.0.0.1:0" for an ephemeral test port).
Sourcepub fn with_timeouts(self, timeouts: IngestTimeouts) -> Self
pub fn with_timeouts(self, timeouts: IngestTimeouts) -> Self
Overrides the default IngestTimeouts: connect bounds how long a
still-establishing session (no Sample observed yet) may sit before
HandshakePolicy::establish_by reaps it; read bounds every
individual RtmpConnection::next_events call.
Sourcepub fn with_app(self, app: Option<String>) -> Self
pub fn with_app(self, app: Option<String>) -> Self
Requires the publisher’s connect app name to match exactly, if
set — enforced by RtmpIngestSession::feed once the first
Connected { app } event arrives.
Sourcepub fn with_stream_key(self, stream_key: Option<String>) -> Self
pub fn with_stream_key(self, stream_key: Option<String>) -> Self
Requires the publisher’s publish stream key to match exactly, if
set — passed straight through as
ServerConfig::expected_stream_key, so a mismatched key is
rejected by the sans-IO session itself (NetStream.Publish.BadName)
before this source ever sees a Publish/Media event.
Sourcepub fn with_max_sessions(self, max_sessions: usize) -> Self
pub fn with_max_sessions(self, max_sessions: usize) -> Self
Overrides DEFAULT_RTMP_MAX_SESSIONS — the Listener::max_sessions
bound.
Trait Implementations§
Source§impl Debug for RtmpRoute
Manual Debug (rather than #[derive(Debug)]), mirroring
crate::source::ts_http::TsHttpRoute’s: stream_key is redacted even
though it’s a shared secret rather than a password, for the same reason
— it should never turn up verbatim in a log line.
impl Debug for RtmpRoute
Manual Debug (rather than #[derive(Debug)]), mirroring
crate::source::ts_http::TsHttpRoute’s: stream_key is redacted even
though it’s a shared secret rather than a password, for the same reason
— it should never turn up verbatim in a log line.
Auto Trait Implementations§
impl !Freeze for RtmpRoute
impl !RefUnwindSafe for RtmpRoute
impl Send for RtmpRoute
impl Sync for RtmpRoute
impl Unpin for RtmpRoute
impl UnsafeUnpin for RtmpRoute
impl UnwindSafe for RtmpRoute
Blanket Implementations§
Source§impl<T> ArchivePointee for T
impl<T> ArchivePointee for T
Source§type ArchivedMetadata = ()
type ArchivedMetadata = ()
Source§fn pointer_metadata(
_: &<T as ArchivePointee>::ArchivedMetadata,
) -> <T as Pointee>::Metadata
fn pointer_metadata( _: &<T as ArchivePointee>::ArchivedMetadata, ) -> <T as Pointee>::Metadata
Source§impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
Source§impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
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
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> DescriptorObject for T
impl<T> DescriptorObject for T
Source§impl<T> ExtensionObject for T
impl<T> ExtensionObject for T
impl<A, B, T> HttpServerConnExec<A, B> for Twhere
B: Body,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§fn in_current_span(self) -> Instrumented<Self> ⓘ
fn in_current_span(self) -> Instrumented<Self> ⓘ
Source§impl<T> LayoutRaw for T
impl<T> LayoutRaw for T
Source§fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError>
fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError>
Source§impl<T, N1, N2> Niching<NichedOption<T, N1>> for N2
impl<T, N1, N2> Niching<NichedOption<T, N1>> for N2
Source§unsafe fn is_niched(niched: *const NichedOption<T, N1>) -> bool
unsafe fn is_niched(niched: *const NichedOption<T, N1>) -> bool
Source§fn resolve_niched(out: Place<NichedOption<T, N1>>)
fn resolve_niched(out: Place<NichedOption<T, N1>>)
out indicating that a T is niched.