Skip to main content

Mailbox

Struct Mailbox 

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

One session’s Maildir.

Implementations§

Source§

impl Mailbox

Source

pub fn open(root: &Path, address: &MailAddress) -> Result<Self>

Open (creating when absent) the mailbox of address under root.

Source

pub fn address(&self) -> &MailAddress

Address this mailbox belongs to.

Source

pub fn deliver(&self, envelope: &Envelope) -> Result<PathBuf>

File envelope. Returns the path it is filed under; an envelope whose id is already filed is not written again.

Source

pub fn deliver_read(&self, envelope: &Envelope) -> Result<PathBuf>

File an envelope that has already reached its reader by another door (a runtime’s own input), so the thread keeps it without offering it again. Deduplicates on the id like Self::deliver.

Source

pub fn list(&self) -> Result<Vec<StoredEnvelope>>

Every envelope in the mailbox, oldest first.

Source

pub fn unread(&self) -> Result<Vec<StoredEnvelope>>

Envelopes not yet handed on, oldest first. The user’s own turns are not among them: they are not the reader’s to read, their door delivers them (Self::user_turns).

Source

pub fn user_turns(&self) -> Result<Vec<StoredEnvelope>>

The user’s own turns still waiting for their door, oldest first.

Source

pub fn claim_user_turn( &self, stored: &StoredEnvelope, ) -> Result<Option<StoredEnvelope>>

Take one of the user’s waiting turns for typing, so a second typer (the machine’s watcher beside a direct delivery) does not type it too: moved into claimed/ under this process’s pid. None when another typer took it first. Hand it on and acknowledge it, or release it to wait again.

Source

pub fn release(&self, claimed: &StoredEnvelope) -> Result<()>

Return a claimed envelope to waiting, as it was before it was claimed.

Source

pub fn mark_read(&self, stored: &StoredEnvelope) -> Result<()>

Record that a waiting envelope reached its reader by its door.

Source

pub fn find(&self, id: &str) -> Result<Option<StoredEnvelope>>

The envelope filed under id, in either state.

Source

pub fn subscribe_idle(&self, subscription: &IdleSubscription) -> Result<()>

Record (or update) a subscription on this mailbox’s session.

Source

pub fn subscriptions(&self) -> Result<Vec<IdleSubscription>>

The idle subscriptions waiting on this mailbox’s session.

Source

pub fn remove_subscription(&self, message_id: &str) -> Result<()>

Remove one subscription. Fails when another watcher removed it first, so a notice is sent at most once.

Source

pub fn claim_unread(&self) -> Result<Vec<StoredEnvelope>>

Take every unread envelope for this reader, oldest first.

Each is moved into claimed/ under this process’s pid, so a second reader does not take it too. Hand each one on, then acknowledge it. Claims left by readers that are no longer running are returned to new/ first, so their messages are offered again.

Source

pub fn acknowledge(&self, claimed: &StoredEnvelope) -> Result<()>

Record that a claimed envelope reached its reader.

Trait Implementations§

Source§

impl Clone for Mailbox

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

Source§

fn __clone_box(&self, _: Private) -> *mut ()

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> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
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> 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> 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<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