use std::time::Duration;
use tracing::Span;
pub trait OnBodyChunk<B> {
fn on_body_chunk(&mut self, chunk: &B, latency: Duration, span: &Span);
}
impl<B, F> OnBodyChunk<B> for F
where
F: FnMut(&B, Duration, &Span),
{
fn on_body_chunk(&mut self, chunk: &B, latency: Duration, span: &Span) {
self(chunk, latency, span)
}
}
impl<B> OnBodyChunk<B> for () {
#[inline]
fn on_body_chunk(&mut self, _: &B, _: Duration, _: &Span) {}
}
#[derive(Debug, Default, Clone)]
pub struct DefaultOnBodyChunk {
_priv: (),
}
impl DefaultOnBodyChunk {
pub fn new() -> Self {
Self { _priv: () }
}
}
impl<B> OnBodyChunk<B> for DefaultOnBodyChunk {
#[inline]
fn on_body_chunk(&mut self, _: &B, _: Duration, _: &Span) {}
}