Skip to main content

Buffered

Struct Buffered 

Source
pub struct Buffered<R, S> { /* private fields */ }
Expand description

In-memory buffering tier: holds records and pushes them downstream when its FlushPolicy fires.

The policy is checked on each ingest (collector ticks are frequent compared to flush windows, so no extra timer task is needed); flush force-drains. On downstream failure the records are kept and retried at the next firing — a transient outage of the terminal sink does not lose data held in this tier.

Requires R: Clone so retained records survive a failed downstream ingest.

Implementations§

Source§

impl<R, S> Buffered<R, S>

Source

pub fn new(policy: FlushPolicy, inner: S) -> Self

Source

pub fn inner(&self) -> &S

Access the wrapped sink.

Trait Implementations§

Source§

impl<R, S> Sink<R> for Buffered<R, S>
where R: Clone + Send + 'static, S: Sink<R>,

Source§

type Error = <S as Sink<R>>::Error

Concrete error type (a thiserror enum, not a boxed error).
Source§

async fn ingest( &mut self, meta: &WindowMeta, records: Vec<R>, ) -> Result<(), Self::Error>

Hand records to this layer. A buffering layer may hold them; a terminal sink ships them immediately.
Source§

async fn flush(&mut self) -> Result<(), Self::Error>

Force-drain this layer and everything downstream (shutdown, final flush, startup recovery).

Auto Trait Implementations§

§

impl<R, S> Freeze for Buffered<R, S>
where S: Freeze,

§

impl<R, S> RefUnwindSafe for Buffered<R, S>

§

impl<R, S> Send for Buffered<R, S>
where S: Send, R: Send,

§

impl<R, S> Sync for Buffered<R, S>
where S: Sync, R: Sync,

§

impl<R, S> Unpin for Buffered<R, S>
where S: Unpin, R: Unpin,

§

impl<R, S> UnsafeUnpin for Buffered<R, S>
where S: UnsafeUnpin,

§

impl<R, S> UnwindSafe for Buffered<R, S>
where S: UnwindSafe, R: UnwindSafe,

Blanket Implementations§

Source§

impl<T> Allocation for T
where T: RefUnwindSafe + Send + Sync,

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> PolicyExt for T
where T: ?Sized,

Source§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Sized + Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow only if self and other return Action::Follow. Read more
Source§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Sized + Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow if either self or other returns Action::Follow. Read more
Source§

impl<T> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,

Source§

impl<R, S> SinkExt<R> for S
where S: Sink<R>,

Source§

fn buffered(self, policy: FlushPolicy) -> Buffered<R, Self>

Wrap self in an in-memory buffering tier.
Source§

fn spooled( self, dir: impl Into<PathBuf>, policy: FlushPolicy, ) -> DiskSpool<R, Self>

Wrap self in a durable write-ahead spool rooted at dir. Read more
Source§

fn tee<B: Sink<R>>(self, other: B) -> Tee<Self, B>

Fan out: every batch is ingested into both self and other.
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more