Table of Contents

Class SuppressedMailboxChange

Namespace
MailFathom.Domain.Mutations
Assembly
MailFathom.Domain.dll

One change a synchronization run discovered and did not raise, because MailFathom itself had made it.

public sealed record SuppressedMailboxChange : IEquatable<SuppressedMailboxChange>
Inheritance
SuppressedMailboxChange
Implements
Inherited Members

Remarks

Suppression exists so that a rule which files mail files it once. Every mutation MailFathom performs is a change synchronization later discovers, so without provenance a rule matching on folder would file a message, discover it in its new folder, match again, and go round for as long as the mailbox is watched — at the cost of an IMAP command a lap. Two rules with overlapping conditions do the same to each other.

It is decided from the record and from nothing else. A cycle limit or a rate limit would be the alternative and both are worse: the first stops a loop only after it has run several times, and the second stops legitimate work at the same threshold. The record answers the question exactly, so the answer is a fact rather than an inference.

This value is what makes a suppression explainable. A rule that appears not to have fired is otherwise the same thing to read as a rule that never matched, so a run reports which change it withheld and which record accounted for it. It names identities and a mutation name only, never a subject, an address, or any other part of the message.

Constructors

SuppressedMailboxChange(MailboxChangeKind, MailboxMutation, StoredEmailId, MailboxMutationRecordId)

One change a synchronization run discovered and did not raise, because MailFathom itself had made it.

Properties

Kind

What the mail server reported had changed.

Mutation

The change MailFathom had asked for, which is the same word its log line and its counter use.

MutationRecordId

The durable record that answered was this ours.

StoredEmailId

The local email the change is about.