pub struct Mailbox { /* private fields */ }Expand description
One session’s Maildir.
Implementations§
Source§impl Mailbox
impl Mailbox
Sourcepub fn open(root: &Path, address: &MailAddress) -> Result<Self>
pub fn open(root: &Path, address: &MailAddress) -> Result<Self>
Open (creating when absent) the mailbox of address under root.
Sourcepub fn address(&self) -> &MailAddress
pub fn address(&self) -> &MailAddress
Address this mailbox belongs to.
Sourcepub fn deliver(&self, envelope: &Envelope) -> Result<PathBuf>
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.
Sourcepub fn deliver_read(&self, envelope: &Envelope) -> Result<PathBuf>
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.
Sourcepub fn list(&self) -> Result<Vec<StoredEnvelope>>
pub fn list(&self) -> Result<Vec<StoredEnvelope>>
Every envelope in the mailbox, oldest first.
Sourcepub fn unread(&self) -> Result<Vec<StoredEnvelope>>
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).
Sourcepub fn user_turns(&self) -> Result<Vec<StoredEnvelope>>
pub fn user_turns(&self) -> Result<Vec<StoredEnvelope>>
The user’s own turns still waiting for their door, oldest first.
Sourcepub fn claim_user_turn(
&self,
stored: &StoredEnvelope,
) -> Result<Option<StoredEnvelope>>
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.
Sourcepub fn release(&self, claimed: &StoredEnvelope) -> Result<()>
pub fn release(&self, claimed: &StoredEnvelope) -> Result<()>
Return a claimed envelope to waiting, as it was before it was claimed.
Sourcepub fn mark_read(&self, stored: &StoredEnvelope) -> Result<()>
pub fn mark_read(&self, stored: &StoredEnvelope) -> Result<()>
Record that a waiting envelope reached its reader by its door.
Sourcepub fn find(&self, id: &str) -> Result<Option<StoredEnvelope>>
pub fn find(&self, id: &str) -> Result<Option<StoredEnvelope>>
The envelope filed under id, in either state.
Sourcepub fn subscribe_idle(&self, subscription: &IdleSubscription) -> Result<()>
pub fn subscribe_idle(&self, subscription: &IdleSubscription) -> Result<()>
Record (or update) a subscription on this mailbox’s session.
Sourcepub fn subscriptions(&self) -> Result<Vec<IdleSubscription>>
pub fn subscriptions(&self) -> Result<Vec<IdleSubscription>>
The idle subscriptions waiting on this mailbox’s session.
Sourcepub fn remove_subscription(&self, message_id: &str) -> Result<()>
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.
Sourcepub fn claim_unread(&self) -> Result<Vec<StoredEnvelope>>
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.
Sourcepub fn acknowledge(&self, claimed: &StoredEnvelope) -> Result<()>
pub fn acknowledge(&self, claimed: &StoredEnvelope) -> Result<()>
Record that a claimed envelope reached its reader.