pub struct Dispatcher { /* private fields */ }Expand description
Drives every sink for the daemon output path.
Implementations§
Source§impl Dispatcher
impl Dispatcher
Sourcepub fn spawn<S: DeliverySink>(
sinks: Vec<(S, OnFull, DeliveryConfig)>,
dlq_tx: Option<Sender<DeliveryFailure>>,
ack_tx: UnboundedSender<AckToken>,
metrics: Arc<dyn MetricsHook>,
) -> Self
pub fn spawn<S: DeliverySink>( sinks: Vec<(S, OnFull, DeliveryConfig)>, dlq_tx: Option<Sender<DeliveryFailure>>, ack_tx: UnboundedSender<AckToken>, metrics: Arc<dyn MetricsHook>, ) -> Self
Spawn one worker per leaf sink, each with its own full-queue policy and
delivery tuning. sinks should already be flattened to leaves (see
crate::io::Sink::into_leaves); each carries its own
DeliveryConfig so a sink (e.g. a webhook) can override the global
retry/backoff/queue defaults.
Sourcepub async fn dispatch(&self, result: ProcessResult, tokens: Vec<AckToken>)
pub async fn dispatch(&self, result: ProcessResult, tokens: Vec<AckToken>)
Fan one result and its ack tokens into every worker. Awaits queue space
for Block sinks; never blocks for Drop sinks.
Sourcepub async fn dispatch_incident(&self, incident: IncidentEnvelope)
pub async fn dispatch_incident(&self, incident: IncidentEnvelope)
Fan one incident line into every worker. Incidents are synthetic (no input event), so they carry no ack tokens.
Auto Trait Implementations§
impl !RefUnwindSafe for Dispatcher
impl !UnwindSafe for Dispatcher
impl Freeze for Dispatcher
impl Send for Dispatcher
impl Sync for Dispatcher
impl Unpin for Dispatcher
impl UnsafeUnpin for Dispatcher
Blanket Implementations§
Source§impl<T> AnyExt for T
impl<T> AnyExt for T
Source§fn downcast_ref<T>(this: &Self) -> Option<&T>where
T: Any,
fn downcast_ref<T>(this: &Self) -> Option<&T>where
T: Any,
Attempts to downcast this to
T behind referenceSource§fn downcast_mut<T>(this: &mut Self) -> Option<&mut T>where
T: Any,
fn downcast_mut<T>(this: &mut Self) -> Option<&mut T>where
T: Any,
Attempts to downcast this to
T behind mutable referenceSource§fn downcast_rc<T>(this: Rc<Self>) -> Result<Rc<T>, Rc<Self>>where
T: Any,
fn downcast_rc<T>(this: Rc<Self>) -> Result<Rc<T>, Rc<Self>>where
T: Any,
Attempts to downcast this to
T behind Rc pointerSource§fn downcast_arc<T>(this: Arc<Self>) -> Result<Arc<T>, Arc<Self>>where
T: Any,
fn downcast_arc<T>(this: Arc<Self>) -> Result<Arc<T>, Arc<Self>>where
T: Any,
Attempts to downcast this to
T behind Arc pointerSource§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
Source§impl<T, X> CoerceTo<T> for Xwhere
T: CoerceFrom<X> + ?Sized,
impl<T, X> CoerceTo<T> for Xwhere
T: CoerceFrom<X> + ?Sized,
fn coerce_rc_to(self: Rc<X>) -> Rc<T>
fn coerce_box_to(self: Box<X>) -> Box<T>
fn coerce_ref_to(&self) -> &T
fn coerce_mut_to(&mut self) -> &mut T
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> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more