Skip to main content

Mailbox

Struct Mailbox 

Source
pub struct Mailbox { /* private fields */ }
Expand description

An agent’s inbound queue plus send handles to its peers.

cache holds messages already pulled off the channel but not yet withdrawn — set aside by a sender-selective recv_from that skipped past them. They are the oldest messages, so plain recv drains the cache before the channel.

Implementations§

Source§

impl Mailbox

Source

pub fn send_to(&self, to: &str, bytes: impl Into<Vec<u8>>) -> Result<()>

Send bytes to the agent named to.

Fails with TestkitError::UnknownAgent when no such agent exists, or TestkitError::MailboxClosed when the recipient has already finished.

Source

pub async fn recv(&mut self) -> Option<Envelope>

Wait for the next message from any sender, or None once every peer has finished. Cached messages (set aside by recv_from) come first, oldest to newest, before anything still on the channel.

Source

pub fn try_recv(&mut self) -> Option<Envelope>

Take a pending message from any sender without waiting.

Source

pub async fn recv_from_any(&mut self, from: &[&str]) -> Option<Envelope>

Wait for the next message from any of the agents named in from, or None once every peer has finished without one arriving.

Messages from senders outside the set that arrive first are cached in order and remain available to later recv / recv_from* calls, so selecting by sender does not drop anyone else’s messages.

Source

pub fn try_recv_from_any(&mut self, from: &[&str]) -> Option<Envelope>

Take a pending message from any of the agents named in from without waiting. Non-matching messages already waiting are cached, not dropped.

Source

pub async fn recv_from(&mut self, from: &str) -> Option<Envelope>

Wait for the next message from the agent named from, or None once every peer has finished without one arriving.

Source

pub fn try_recv_from(&mut self, from: &str) -> Option<Envelope>

Take a pending message from the agent named from without waiting.

Trait Implementations§

Source§

impl Debug for Mailbox

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more

Auto Trait Implementations§

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<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> MaybeSend for T
where T: Send,

Source§

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

Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> StaticIfNoAlloc for T

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<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

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