pub struct ProcessorContext<'ctx, 'd, KOut, VOut> { /* private fields */ }Expand description
The context handed to Processor::process. forward boxes the record and
queues it for each child node, and the driver drains the queue.
There are two lifetimes. 'ctx is the borrow of the Dispatch reference
itself. 'd is the lifetime of the data inside Dispatch, such as the
buffers and the slices. Separate lifetimes avoid lifetime-invariance problems
when the code builds a ProcessorContext from a &mut Dispatch<'d> with an
independently-scoped outer borrow 'ctx.
Implementations§
Source§impl<'ctx, 'd, KOut, VOut> ProcessorContext<'ctx, 'd, KOut, VOut>
impl<'ctx, 'd, KOut, VOut> ProcessorContext<'ctx, 'd, KOut, VOut>
Sourcepub fn forward(&mut self, record: Record<KOut, VOut>)
pub fn forward(&mut self, record: Record<KOut, VOut>)
Forward a record to all child nodes.
The fan-out clones the record once per child. The last child receives the
original by move, so the common single-child case makes no clone. This
mirrors the JVM ProcessorContext.forward(Record), which takes the
record by value.
Sourcepub fn get_state_store<K2: Send + Sync + 'static, V2: Send + 'static>(
&mut self,
name: &str,
) -> Option<&mut dyn KeyValueStore<K2, V2>>
pub fn get_state_store<K2: Send + Sync + 'static, V2: Send + 'static>( &mut self, name: &str, ) -> Option<&mut dyn KeyValueStore<K2, V2>>
Access a connected state store, typed. It returns None when the store
is absent or the K and V types do not match. Fetch it once per record and
do not hold it across process calls.
Sourcepub async fn global_get<GK: Send + Sync + 'static, VG: Send + 'static>(
&mut self,
store: &str,
key: &GK,
) -> Option<VG>
pub async fn global_get<GK: Send + Sync + 'static, VG: Send + 'static>( &mut self, store: &str, key: &GK, ) -> Option<VG>
Look up a value in a connected GLOBAL store, which is fully replicated and shared across tasks.
The method returns an owned value. No borrow escapes the shared manager’s
lock, so the caller need not hold the lookup future across forward. It
returns None on a miss or a type mismatch. Fetch it once per record and
do not hold it across process calls.
Sourcepub fn get_window_store<K2: Send + Sync + 'static, V2: Send + 'static>(
&mut self,
name: &str,
) -> Option<&mut dyn WindowStore<K2, V2>>
pub fn get_window_store<K2: Send + Sync + 'static, V2: Send + 'static>( &mut self, name: &str, ) -> Option<&mut dyn WindowStore<K2, V2>>
Access a connected window store, typed. It returns None when the store
is absent or the K and V types do not match. Fetch it once per record and
do not hold it across process calls.
Sourcepub fn get_join_window_store<K2: Send + Sync + 'static, V2: Send + 'static>(
&mut self,
name: &str,
) -> Option<&mut dyn JoinWindowStore<K2, V2>>
pub fn get_join_window_store<K2: Send + Sync + 'static, V2: Send + 'static>( &mut self, name: &str, ) -> Option<&mut dyn JoinWindowStore<K2, V2>>
Access a connected join-window store (retainDuplicates), typed. It
returns None when the store is absent or the K and V types do not
match. Fetch it once per record and do not hold it across process
calls.
Sourcepub fn get_session_store<K2: Send + Sync + 'static, V2: Send + 'static>(
&mut self,
name: &str,
) -> Option<&mut dyn SessionStore<K2, V2>>
pub fn get_session_store<K2: Send + Sync + 'static, V2: Send + 'static>( &mut self, name: &str, ) -> Option<&mut dyn SessionStore<K2, V2>>
Access a connected session store, typed. It returns None when the store
is absent or the K and V types do not match. Fetch it once per record and
do not hold it across process calls.
Sourcepub fn get_versioned_store<K2: Send + Sync + 'static, V2: Send + 'static>(
&mut self,
name: &str,
) -> Option<&mut dyn VersionedKeyValueStore<K2, V2>>
pub fn get_versioned_store<K2: Send + Sync + 'static, V2: Send + 'static>( &mut self, name: &str, ) -> Option<&mut dyn VersionedKeyValueStore<K2, V2>>
Access a connected versioned store (KIP-889), typed. It returns None
when the store is absent or the K and V types do not match. Fetch it once
per record and do not hold it across process calls.
Sourcepub fn record_context(&self) -> &RecordContext
pub fn record_context(&self) -> &RecordContext
The metadata of the source record that this context processes now.
Sourcepub fn store_is_cached(&self, name: &str) -> bool
pub fn store_is_cached(&self, name: &str) -> bool
Whether the named KV state store is record-cached. When it is, this processor should suppress its immediate forward and let the cache flush forward the deduped change. The method returns false for an absent store, a non-KV store, and an uncached store.
Sourcepub fn schedule<P>(
&mut self,
interval: Duration,
ty: PunctuationType,
punctuator: P,
) -> Cancellablewhere
P: Punctuator<KOut, VOut>,
pub fn schedule<P>(
&mut self,
interval: Duration,
ty: PunctuationType,
punctuator: P,
) -> Cancellablewhere
P: Punctuator<KOut, VOut>,
Schedule a periodic Punctuator. You can call this from init or from
process. interval must be positive. The method returns a
Cancellable that stops the punctuator.
§Panics
Panics if synchronized client state is poisoned or a response violates an invariant established by protocol validation.
Auto Trait Implementations§
impl<'ctx, 'd, KOut, VOut> !RefUnwindSafe for ProcessorContext<'ctx, 'd, KOut, VOut>
impl<'ctx, 'd, KOut, VOut> !Sync for ProcessorContext<'ctx, 'd, KOut, VOut>
impl<'ctx, 'd, KOut, VOut> !UnwindSafe for ProcessorContext<'ctx, 'd, KOut, VOut>
impl<'ctx, 'd, KOut, VOut> Freeze for ProcessorContext<'ctx, 'd, KOut, VOut>
impl<'ctx, 'd, KOut, VOut> Send for ProcessorContext<'ctx, 'd, KOut, VOut>
impl<'ctx, 'd, KOut, VOut> Unpin for ProcessorContext<'ctx, 'd, KOut, VOut>
impl<'ctx, 'd, KOut, VOut> UnsafeUnpin for ProcessorContext<'ctx, 'd, KOut, VOut>
Blanket Implementations§
§impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
§impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
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
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
§impl<K, Q> Comparable<Q> for K
impl<K, Q> Comparable<Q> for K
§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>, which can then be
downcast into Box<dyn ConcreteType> where ConcreteType implements Trait.§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait> (where Trait: Downcast) to Rc<Any>, which can then be further
downcast into Rc<ConcreteType> where ConcreteType implements Trait.§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s.§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.§impl<T> DowncastSend for T
impl<T> DowncastSend for T
§impl<K, Q> Equivalent<Q> for K
impl<K, Q> Equivalent<Q> for K
§fn equivalent(&self, key: &Q) -> bool
fn equivalent(&self, key: &Q) -> bool
key and return true if they are equal.impl<T> ErasedDestructor for Twhere
T: 'static,
impl<T> Fruit for Twhere
T: Send + Downcast,
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§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>
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>
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§impl<T> Paint for Twhere
T: ?Sized,
impl<T> Paint for Twhere
T: ?Sized,
§fn fg(&self, value: Color) -> Painted<&T>
fn fg(&self, value: Color) -> Painted<&T>
Returns a styled value derived from self with the foreground set to
value.
This method should be used rarely. Instead, prefer to use color-specific
builder methods like red() and
green(), which have the same functionality but are
pithier.
§Example
Set foreground color to white using fg():
use yansi::{Paint, Color};
painted.fg(Color::White);Set foreground color to white using white().
use yansi::Paint;
painted.white();§fn bright_black(&self) -> Painted<&T>
fn bright_black(&self) -> Painted<&T>
§fn bright_red(&self) -> Painted<&T>
fn bright_red(&self) -> Painted<&T>
§fn bright_green(&self) -> Painted<&T>
fn bright_green(&self) -> Painted<&T>
§fn bright_yellow(&self) -> Painted<&T>
fn bright_yellow(&self) -> Painted<&T>
§fn bright_blue(&self) -> Painted<&T>
fn bright_blue(&self) -> Painted<&T>
§fn bright_magenta(&self) -> Painted<&T>
fn bright_magenta(&self) -> Painted<&T>
§fn bright_cyan(&self) -> Painted<&T>
fn bright_cyan(&self) -> Painted<&T>
§fn bright_white(&self) -> Painted<&T>
fn bright_white(&self) -> Painted<&T>
§fn bg(&self, value: Color) -> Painted<&T>
fn bg(&self, value: Color) -> Painted<&T>
Returns a styled value derived from self with the background set to
value.
This method should be used rarely. Instead, prefer to use color-specific
builder methods like on_red() and
on_green(), which have the same functionality but
are pithier.
§Example
Set background color to red using fg():
use yansi::{Paint, Color};
painted.bg(Color::Red);Set background color to red using on_red().
use yansi::Paint;
painted.on_red();§fn on_primary(&self) -> Painted<&T>
fn on_primary(&self) -> Painted<&T>
§fn on_magenta(&self) -> Painted<&T>
fn on_magenta(&self) -> Painted<&T>
§fn on_bright_black(&self) -> Painted<&T>
fn on_bright_black(&self) -> Painted<&T>
§fn on_bright_red(&self) -> Painted<&T>
fn on_bright_red(&self) -> Painted<&T>
§fn on_bright_green(&self) -> Painted<&T>
fn on_bright_green(&self) -> Painted<&T>
§fn on_bright_yellow(&self) -> Painted<&T>
fn on_bright_yellow(&self) -> Painted<&T>
§fn on_bright_blue(&self) -> Painted<&T>
fn on_bright_blue(&self) -> Painted<&T>
§fn on_bright_magenta(&self) -> Painted<&T>
fn on_bright_magenta(&self) -> Painted<&T>
§fn on_bright_cyan(&self) -> Painted<&T>
fn on_bright_cyan(&self) -> Painted<&T>
§fn on_bright_white(&self) -> Painted<&T>
fn on_bright_white(&self) -> Painted<&T>
§fn attr(&self, value: Attribute) -> Painted<&T>
fn attr(&self, value: Attribute) -> Painted<&T>
Enables the styling [Attribute] value.
This method should be used rarely. Instead, prefer to use
attribute-specific builder methods like bold() and
underline(), which have the same functionality
but are pithier.
§Example
Make text bold using attr():
use yansi::{Paint, Attribute};
painted.attr(Attribute::Bold);Make text bold using using bold().
use yansi::Paint;
painted.bold();§fn rapid_blink(&self) -> Painted<&T>
fn rapid_blink(&self) -> Painted<&T>
§fn quirk(&self, value: Quirk) -> Painted<&T>
fn quirk(&self, value: Quirk) -> Painted<&T>
Enables the yansi [Quirk] value.
This method should be used rarely. Instead, prefer to use quirk-specific
builder methods like mask() and
wrap(), which have the same functionality but are
pithier.
§Example
Enable wrapping using .quirk():
use yansi::{Paint, Quirk};
painted.quirk(Quirk::Wrap);Enable wrapping using wrap().
use yansi::Paint;
painted.wrap();§fn clear(&self) -> Painted<&T>
👎Deprecated since 1.0.1: renamed to resetting() due to conflicts with Vec::clear().
The clear() method will be removed in a future release.
fn clear(&self) -> Painted<&T>
renamed to resetting() due to conflicts with Vec::clear().
The clear() method will be removed in a future release.
§fn whenever(&self, value: Condition) -> Painted<&T>
fn whenever(&self, value: Condition) -> Painted<&T>
Conditionally enable styling based on whether the [Condition] value
applies. Replaces any previous condition.
See the crate level docs for more details.
§Example
Enable styling painted only when both stdout and stderr are TTYs:
use yansi::{Paint, Condition};
painted.red().on_yellow().whenever(Condition::STDOUTERR_ARE_TTY);