pub enum Sink {
Stdout(StdoutSink),
File(FileSink),
Webhook(Box<WebhookSink>),
FanOut(Vec<Sink>),
}Expand description
Enum dispatch for output adapters.
Uses enum dispatch instead of dyn Trait because:
- Async trait methods are not object-safe
FanOut(Vec<Sink>)requires a sized, concrete type
Variants§
Stdout(StdoutSink)
Write NDJSON to stdout.
File(FileSink)
Append NDJSON to a file.
Webhook(Box<WebhookSink>)
Render and POST a templated HTTP request per result.
FanOut(Vec<Sink>)
Fan out to multiple sinks.
Implementations§
Source§impl Sink
impl Sink
Sourcepub fn send<'a>(
&'a mut self,
result: &'a ProcessResult,
) -> Pin<Box<dyn Future<Output = Result<(), RuntimeError>> + Send + 'a>>
pub fn send<'a>( &'a mut self, result: &'a ProcessResult, ) -> Pin<Box<dyn Future<Output = Result<(), RuntimeError>> + Send + 'a>>
Serialize and deliver a ProcessResult to this sink.
Synchronous sinks (Stdout, File) use block_in_place to avoid blocking
the Tokio runtime. Uses Box::pin for the FanOut case to handle
recursive async.
Sourcepub fn send_raw<'a>(
&'a mut self,
json: &'a str,
) -> Pin<Box<dyn Future<Output = Result<(), RuntimeError>> + Send + 'a>>
pub fn send_raw<'a>( &'a mut self, json: &'a str, ) -> Pin<Box<dyn Future<Output = Result<(), RuntimeError>> + Send + 'a>>
Write a pre-serialized JSON string directly to this sink.
Sourcepub fn into_leaves(self) -> Vec<Sink>
pub fn into_leaves(self) -> Vec<Sink>
Flatten a (possibly nested) FanOut into its leaf sinks.
The delivery layer runs one worker per leaf, so fan-out is realized by
the dispatcher rather than by a FanOut variant on the hot path.
Trait Implementations§
Source§impl DeliverySink for Sink
impl DeliverySink for Sink
Auto Trait Implementations§
impl !RefUnwindSafe for Sink
impl !UnwindSafe for Sink
impl Freeze for Sink
impl Send for Sink
impl Sync for Sink
impl Unpin for Sink
impl UnsafeUnpin for Sink
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