pub struct RecorderProcessor { /* private fields */ }Expand description
Taps the inbound (caller) leg into the shared recorder and folds usage reports.
The outbound (bot) leg is recorded by TransportOutput (where the 24k chunk
is in hand), exactly mirroring call.rs which records inbound at carrier rate
and outbound at 24k. A pure observer-style tap: forwards every frame unchanged.
Trait Implementations§
Source§impl FrameProcessor for RecorderProcessor
impl FrameProcessor for RecorderProcessor
Source§fn name(&self) -> &str
fn name(&self) -> &str
Stable, human-readable name (observer events, error attribution, tracing).
Source§fn process_frame<'life0, 'life1, 'async_trait>(
&'life0 mut self,
env: Envelope,
link: &'life1 Link,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn process_frame<'life0, 'life1, 'async_trait>(
&'life0 mut self,
env: Envelope,
link: &'life1 Link,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Handle one frame. Push results via
link. Must not block: long work
(a provider round-trip) is driven by an internally-spawned task that feeds
results back as frames. The default impl forwards the frame unchanged in
its direction — so a pure observer/no-op processor is process_frame =
default.Source§fn start<'life0, 'life1, 'life2, 'async_trait>(
&'life0 mut self,
_setup: &'life1 ProcessorSetup,
_params: &'life2 StartParams,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
fn start<'life0, 'life1, 'life2, 'async_trait>(
&'life0 mut self,
_setup: &'life1 ProcessorSetup,
_params: &'life2 StartParams,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
Called once when the
Frame::Start frame reaches this processor, before
any data frame. Open sockets / spawn provider readers here. Default: no-op.Source§fn stop<'life0, 'async_trait>(
&'life0 mut self,
_reason: StopReason,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn stop<'life0, 'async_trait>(
&'life0 mut self,
_reason: StopReason,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Called on
End/Stop/Cancel after the terminal frame is forwarded.
Flush + close. Default: no-op.Source§fn can_generate_metrics(&self) -> bool
fn can_generate_metrics(&self) -> bool
Whether this processor produces metrics (pipecat
can_generate_metrics,
:395). Services override to true.Auto Trait Implementations§
impl Freeze for RecorderProcessor
impl RefUnwindSafe for RecorderProcessor
impl Send for RecorderProcessor
impl Sync for RecorderProcessor
impl Unpin for RecorderProcessor
impl UnsafeUnpin for RecorderProcessor
impl UnwindSafe for RecorderProcessor
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