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§
Sourcefn receive(&self, deferred: &[String]) -> Option<Envelope>
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.
Sourcefn ack(&self, message_id: &str) -> Result<(), MailboxError>
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.
Sourcefn release(&self, message_id: &str)
fn release(&self, message_id: &str)
Puts the in-flight message message_id back, to be received again.
Sourcefn release_all(&self)
fn release_all(&self)
Puts every in-flight message back.
Sourcefn pending_deliverable(&self, deferred: &[String]) -> usize
fn pending_deliverable(&self, deferred: &[String]) -> usize
The number of messages that are neither in flight nor deferred.
Provided Methods§
Sourcefn has_deliverable(&self, deferred: &[String]) -> bool
fn has_deliverable(&self, deferred: &[String]) -> bool
True when Mailbox::receive would return a message.
Dyn Compatibility§
This trait is dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety".