pub struct ItemListenerSet<I, O> { /* private fields */ }Expand description
A bounded, ordered registration of the M3 item listener families.
use std::sync::Arc;
use oxide_batch::{
BoxFuture, ItemListenerContext, ItemListenerSet, ListenerError, ReadListener,
};
struct AuditReads;
impl ReadListener<u32> for AuditReads {
fn after_read<'a>(
&'a self,
item: &'a u32,
_context: ItemListenerContext<'a>,
) -> BoxFuture<'a, Result<(), ListenerError>> {
let accepted = *item < 1_000;
Box::pin(async move {
if accepted {
Ok(())
} else {
Err(ListenerError::new())
}
})
}
}
let listeners = ItemListenerSet::<u32, String>::new()
.with_read_listener(Arc::new(AuditReads))?;
assert_eq!(listeners.read_listeners(), 1);Implementations§
Source§impl<I, O> ItemListenerSet<I, O>
impl<I, O> ItemListenerSet<I, O>
Sourcepub const MAX_LISTENERS: usize = MAX_LISTENERS
pub const MAX_LISTENERS: usize = MAX_LISTENERS
The largest accepted number of listeners in one family.
Sourcepub fn with_read_listener(
self,
listener: Arc<dyn ReadListener<I>>,
) -> Result<Self, ItemListenerError>
pub fn with_read_listener( self, listener: Arc<dyn ReadListener<I>>, ) -> Result<Self, ItemListenerError>
Sourcepub fn with_process_listener(
self,
listener: Arc<dyn ProcessListener<I, O>>,
) -> Result<Self, ItemListenerError>
pub fn with_process_listener( self, listener: Arc<dyn ProcessListener<I, O>>, ) -> Result<Self, ItemListenerError>
Registers one process listener.
§Errors
Returns ItemListenerError::TooManyListeners beyond the bound.
Sourcepub fn with_write_listener(
self,
listener: Arc<dyn WriteListener<O>>,
) -> Result<Self, ItemListenerError>
pub fn with_write_listener( self, listener: Arc<dyn WriteListener<O>>, ) -> Result<Self, ItemListenerError>
Sourcepub fn with_retry_listener(
self,
listener: Arc<dyn RetryListener>,
) -> Result<Self, ItemListenerError>
pub fn with_retry_listener( self, listener: Arc<dyn RetryListener>, ) -> Result<Self, ItemListenerError>
Sourcepub fn with_skip_listener(
self,
listener: Arc<dyn SkipListener<I, O>>,
) -> Result<Self, ItemListenerError>
pub fn with_skip_listener( self, listener: Arc<dyn SkipListener<I, O>>, ) -> Result<Self, ItemListenerError>
Sourcepub fn read_listeners(&self) -> usize
pub fn read_listeners(&self) -> usize
Returns the number of registered read listeners.
Sourcepub fn process_listeners(&self) -> usize
pub fn process_listeners(&self) -> usize
Returns the number of registered process listeners.
Sourcepub fn write_listeners(&self) -> usize
pub fn write_listeners(&self) -> usize
Returns the number of registered write listeners.
Sourcepub fn retry_listeners(&self) -> usize
pub fn retry_listeners(&self) -> usize
Returns the number of registered retry listeners.
Sourcepub fn skip_listeners(&self) -> usize
pub fn skip_listeners(&self) -> usize
Returns the number of registered skip listeners.
Source§impl<I, O> ItemListenerSet<I, O>
The callback passes borrow items across await, so both item types must be
shareable. Registration and inspection remain available for any item type.
impl<I, O> ItemListenerSet<I, O>
The callback passes borrow items across await, so both item types must be
shareable. Registration and inspection remain available for any item type.
Sourcepub async fn before_read(
&self,
context: ItemListenerContext<'_>,
) -> BeforeCallbackOutcome
pub async fn before_read( &self, context: ItemListenerContext<'_>, ) -> BeforeCallbackOutcome
Runs read before-callbacks in registration order.
Sourcepub async fn after_read(
&self,
entered: usize,
item: &I,
context: ItemListenerContext<'_>,
) -> Vec<ItemListenerFailure>
pub async fn after_read( &self, entered: usize, item: &I, context: ItemListenerContext<'_>, ) -> Vec<ItemListenerFailure>
Runs read after-callbacks for entered listeners in reverse order.
Sourcepub async fn on_read_error(
&self,
entered: usize,
fault: FaultDescriptor,
context: ItemListenerContext<'_>,
) -> Vec<ItemListenerFailure>
pub async fn on_read_error( &self, entered: usize, fault: FaultDescriptor, context: ItemListenerContext<'_>, ) -> Vec<ItemListenerFailure>
Runs read error callbacks for entered listeners in reverse order.
Sourcepub async fn before_process(
&self,
input: &I,
context: ItemListenerContext<'_>,
) -> BeforeCallbackOutcome
pub async fn before_process( &self, input: &I, context: ItemListenerContext<'_>, ) -> BeforeCallbackOutcome
Runs process before-callbacks in registration order.
Sourcepub async fn after_process(
&self,
entered: usize,
input: &I,
output: Option<&O>,
context: ItemListenerContext<'_>,
) -> Vec<ItemListenerFailure>
pub async fn after_process( &self, entered: usize, input: &I, output: Option<&O>, context: ItemListenerContext<'_>, ) -> Vec<ItemListenerFailure>
Runs process after-callbacks for entered listeners in reverse order.
Sourcepub async fn on_process_error(
&self,
entered: usize,
input: &I,
fault: FaultDescriptor,
context: ItemListenerContext<'_>,
) -> Vec<ItemListenerFailure>
pub async fn on_process_error( &self, entered: usize, input: &I, fault: FaultDescriptor, context: ItemListenerContext<'_>, ) -> Vec<ItemListenerFailure>
Runs process error callbacks for entered listeners in reverse order.
Sourcepub async fn before_write(
&self,
outputs: &[O],
context: ItemListenerContext<'_>,
) -> BeforeCallbackOutcome
pub async fn before_write( &self, outputs: &[O], context: ItemListenerContext<'_>, ) -> BeforeCallbackOutcome
Runs write before-callbacks in registration order.
Sourcepub async fn after_write(
&self,
entered: usize,
outputs: &[O],
context: ItemListenerContext<'_>,
) -> Vec<ItemListenerFailure>
pub async fn after_write( &self, entered: usize, outputs: &[O], context: ItemListenerContext<'_>, ) -> Vec<ItemListenerFailure>
Runs write after-callbacks for entered listeners in reverse order.
Sourcepub async fn on_write_error(
&self,
entered: usize,
outputs: &[O],
fault: FaultDescriptor,
context: ItemListenerContext<'_>,
) -> Vec<ItemListenerFailure>
pub async fn on_write_error( &self, entered: usize, outputs: &[O], fault: FaultDescriptor, context: ItemListenerContext<'_>, ) -> Vec<ItemListenerFailure>
Runs write error callbacks for entered listeners in reverse order.
Sourcepub async fn before_retry(
&self,
fault: FaultDescriptor,
context: ItemListenerContext<'_>,
) -> BeforeCallbackOutcome
pub async fn before_retry( &self, fault: FaultDescriptor, context: ItemListenerContext<'_>, ) -> BeforeCallbackOutcome
Runs retry before-callbacks in registration order.
Sourcepub async fn after_retry(
&self,
entered: usize,
fault: FaultDescriptor,
outcome: RetryOutcome,
context: ItemListenerContext<'_>,
) -> Vec<ItemListenerFailure>
pub async fn after_retry( &self, entered: usize, fault: FaultDescriptor, outcome: RetryOutcome, context: ItemListenerContext<'_>, ) -> Vec<ItemListenerFailure>
Runs retry completion callbacks for entered listeners in reverse order.
Sourcepub async fn on_retry_exhausted(
&self,
entered: usize,
fault: FaultDescriptor,
context: ItemListenerContext<'_>,
) -> Vec<ItemListenerFailure>
pub async fn on_retry_exhausted( &self, entered: usize, fault: FaultDescriptor, context: ItemListenerContext<'_>, ) -> Vec<ItemListenerFailure>
Runs retry exhaustion callbacks for entered listeners in reverse order.
Sourcepub async fn on_skip_in_read(
&self,
fault: FaultDescriptor,
context: ItemListenerContext<'_>,
) -> Vec<ItemListenerFailure>
pub async fn on_skip_in_read( &self, fault: FaultDescriptor, context: ItemListenerContext<'_>, ) -> Vec<ItemListenerFailure>
Confirms a skipped read in registration order.
Sourcepub async fn on_skip_in_process(
&self,
input: &I,
fault: FaultDescriptor,
context: ItemListenerContext<'_>,
) -> Vec<ItemListenerFailure>
pub async fn on_skip_in_process( &self, input: &I, fault: FaultDescriptor, context: ItemListenerContext<'_>, ) -> Vec<ItemListenerFailure>
Confirms a skipped input in registration order.
Sourcepub async fn on_skip_in_write(
&self,
output: &O,
fault: FaultDescriptor,
context: ItemListenerContext<'_>,
) -> Vec<ItemListenerFailure>
pub async fn on_skip_in_write( &self, output: &O, fault: FaultDescriptor, context: ItemListenerContext<'_>, ) -> Vec<ItemListenerFailure>
Confirms a skipped output in registration order.
Trait Implementations§
Source§impl<I, O> Clone for ItemListenerSet<I, O>
impl<I, O> Clone for ItemListenerSet<I, O>
Source§impl<I, O> Debug for ItemListenerSet<I, O>
impl<I, O> Debug for ItemListenerSet<I, O>
Auto Trait Implementations§
impl<I, O> !RefUnwindSafe for ItemListenerSet<I, O>
impl<I, O> !UnwindSafe for ItemListenerSet<I, O>
impl<I, O> Freeze for ItemListenerSet<I, O>
impl<I, O> Send for ItemListenerSet<I, O>
impl<I, O> Sync for ItemListenerSet<I, O>
impl<I, O> Unpin for ItemListenerSet<I, O>
impl<I, O> UnsafeUnpin for ItemListenerSet<I, O>
Blanket Implementations§
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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
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> ⓘ
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