Skip to main content

ChannelMap

Struct ChannelMap 

Source
pub struct ChannelMap<T> { /* private fields */ }
Expand description

Defines independently queued Channel instances under one name.

Supply an instance string for every publish, read, condition, and completion guard. Add the map definition once to crate::PersistenceSchema. Slash is prohibited in instance keys because it is a reserved character.

Implementations§

Source§

impl<T> ChannelMap<T>

Source

pub fn new(name: impl Into<String>) -> Self

Defines a Channel map with a stable name.

Slash is prohibited because it is a reserved character.

Source

pub fn load_messages(&self, instance: impl Into<String>) -> ChannelMapLoad

Selects one slash-free map instance’s pending messages for a handler Context.

Source

pub fn publish( &self, context: &mut Context, instance: &str, value: T, ) -> HandlerResult<()>
where T: Value,

Stages one message for instance from the current invocation.

§Errors

Returns a crate::HandlerError when value cannot be encoded.

Source

pub fn delete( &self, context: &mut Context, instance: &str, message_id: &str, ) -> HandlerResult<()>

Stages best-effort deletion of one pending message from a Channel-map instance.

Source

pub fn size(&self, context: &Context, instance: &str) -> HandlerResult<usize>

Returns the invocation snapshot’s message count for instance.

Source

pub fn pending_messages( &self, context: &Context, instance: &str, ) -> HandlerResult<Vec<ChannelMessage<T>>>
where T: Value,

Returns one instance’s loaded pending messages in FIFO order.

§Errors

Returns a crate::HandlerError when the instance was not selected by the handler options or when a Value cannot be decoded.

Source

pub fn find_pending_message( &self, context: &Context, instance: &str, message_id: &str, ) -> HandlerResult<Option<ChannelMessage<T>>>
where T: Value,

Finds one pending message by ID within one loaded map instance.

Returns Ok(None) when the loaded snapshot does not contain message_id.

§Errors

Returns the same errors as Self::pending_messages.

Source

pub fn map_size(&self, context: &Context) -> HandlerResult<usize>

Returns the number of non-empty instances visible to the current handler.

Source

pub fn all_instance_keys(&self, context: &Context) -> HandlerResult<Vec<String>>

Returns sorted decoded non-empty keys, including buffered publishes.

Source

pub fn condition_results( &self, context: &Context, instance: &str, ) -> HandlerResult<Vec<T>>
where T: Value,

Decodes messages consumed by instance’s satisfied condition.

§Errors

Returns a crate::HandlerError when a message cannot be decoded.

Source

pub fn for_one(&self, instance: &str) -> Condition

Creates an instance condition that consumes exactly one message.

Source

pub fn for_n(&self, instance: &str, count: usize) -> Condition

Creates an instance condition that consumes exactly count messages.

Source

pub fn at_least(&self, instance: &str, count: usize) -> Condition

Creates an instance condition with an inclusive lower queue-size bound.

Source

pub fn at_most(&self, instance: &str, count: usize) -> Condition

Creates a non-blocking instance condition consuming up to count queued messages.

When its surrounding Wait completes, it consumes messages queued then. An empty queue yields no messages.

Source

pub fn range( &self, instance: &str, at_least: Option<usize>, at_most: Option<usize>, ) -> Condition

Creates an instance condition that waits for the lower bound, then consumes to its upper.

Omitting the lower bound makes the condition complete immediately. Consumption uses only messages queued when the condition completes.

Source

pub fn when_empty(&self, instance: &str) -> ChannelGuard

Creates a conditional-completion guard requiring instance to be empty.

Trait Implementations§

Source§

impl<T> Clone for ChannelMap<T>

Source§

fn clone(&self) -> Self

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more

Auto Trait Implementations§

§

impl<T> Freeze for ChannelMap<T>
where PhantomData<fn() -> T>: Freeze,

§

impl<T> RefUnwindSafe for ChannelMap<T>
where PhantomData<fn() -> T>: RefUnwindSafe,

§

impl<T> Send for ChannelMap<T>
where PhantomData<fn() -> T>: Send,

§

impl<T> Sync for ChannelMap<T>
where PhantomData<fn() -> T>: Sync,

§

impl<T> Unpin for ChannelMap<T>
where PhantomData<fn() -> T>: Unpin,

§

impl<T> UnsafeUnpin for ChannelMap<T>
where PhantomData<fn() -> T>: UnsafeUnpin,

§

impl<T> UnwindSafe for ChannelMap<T>
where PhantomData<fn() -> T>: UnwindSafe,

Blanket Implementations§

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<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> FromRef<T> for T
where T: Clone,

Source§

fn from_ref(input: &T) -> T

Converts to this type from a reference to the input type.
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> IntoRequest<T> for T

Source§

fn into_request(self) -> Request<T>

Wrap the input message T in a tonic::Request
Source§

impl<L> LayerExt<L> for L

Source§

fn named_layer<S>(&self, service: S) -> Layered<<L as Layer<S>>::Service, S>
where L: Layer<S>,

Applies the layer to a service and wraps it in Layered.
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> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

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

Source§

type Error = !

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

fn try_from(value: U) -> Result<T, !>

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