Skip to main content

Mailbox

Trait Mailbox 

Source
pub trait Mailbox: Send + Sync {
    // Required methods
    fn enqueue(&self, env: Envelope) -> Result<(), MailboxError>;
    fn receive(&self, deferred: &[String]) -> Option<Envelope>;
    fn ack(&self, message_id: &str) -> Result<(), MailboxError>;
    fn release(&self, message_id: &str);
    fn release_all(&self);
    fn pending(&self) -> Vec<Envelope>;
    fn pending_deliverable(&self, deferred: &[String]) -> usize;

    // Provided methods
    fn has_deliverable(&self, deferred: &[String]) -> bool { ... }
    fn len(&self) -> usize { ... }
    fn is_empty(&self) -> bool { ... }
}
Expand description

The mailbox contract: enqueue, ordered receive with deferral, and acknowledge.

Required Methods§

Source

fn enqueue(&self, env: Envelope) -> Result<(), MailboxError>

Appends a message.

§Errors

MailboxError when the message cannot be stored.

Source

fn receive(&self, deferred: &[String]) -> Option<Envelope>

The oldest message that is neither in flight nor deferred (its event name matches no descriptor in deferred), now marked in flight.

Source

fn ack(&self, message_id: &str) -> Result<(), MailboxError>

Removes the in-flight message message_id (its turn is durable).

§Errors

MailboxError when the removal cannot be stored.

Source

fn release(&self, message_id: &str)

Puts the in-flight message message_id back, to be received again.

Source

fn release_all(&self)

Puts every in-flight message back.

Source

fn pending(&self) -> Vec<Envelope>

Every message not yet acknowledged, in arrival order.

Source

fn pending_deliverable(&self, deferred: &[String]) -> usize

The number of messages that are neither in flight nor deferred.

Provided Methods§

Source

fn has_deliverable(&self, deferred: &[String]) -> bool

True when Mailbox::receive would return a message.

Source

fn len(&self) -> usize

The number of messages not yet acknowledged.

Source

fn is_empty(&self) -> bool

True when every message is acknowledged.

Dyn Compatibility§

This trait is dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety".

Implementors§