pub struct DeliveryExecutor { /* private fields */ }Expand description
Handle held by SMTP sessions to submit deliveries.
Clone-safe (internally Arc<mpsc::Sender>) — every session
task can hold its own clone.
Implementations§
Source§impl DeliveryExecutor
impl DeliveryExecutor
Sourcepub fn spawn() -> Self
pub fn spawn() -> Self
Spawn the executor task and return a handle for submitting
deliveries. Uses default max_batch=64, max_wait=10ms,
max_concurrent_flushes=2. For custom tuning use
Self::with_config.
Sourcepub fn with_config(max_batch: usize, max_wait: Duration) -> Self
pub fn with_config(max_batch: usize, max_wait: Duration) -> Self
Spawn the executor task with explicit batch + wait
thresholds. max_concurrent_flushes is set to the default
(DEFAULT_MAX_CONCURRENT_FLUSHES). For full control use
Self::with_full_config. See module docs for tuning.
Sourcepub fn with_full_config(
max_batch: usize,
max_wait: Duration,
max_concurrent_flushes: usize,
) -> Self
pub fn with_full_config( max_batch: usize, max_wait: Duration, max_concurrent_flushes: usize, ) -> Self
Spawn the executor task with full control over batch size,
wait timeout, and in-flight flush concurrency. See module
docs for tuning guidance — max_concurrent_flushes=1
reproduces v1.0.0 serial behavior; =2 (default) hides
fsync wait behind batch collection.
Sourcepub async fn deliver(
&self,
path: String,
body: Arc<Vec<u8>>,
) -> Result<MessageId>
pub async fn deliver( &self, path: String, body: Arc<Vec<u8>>, ) -> Result<MessageId>
Submit one delivery. Returns the MessageId once the
containing batch has been durably flushed to disk.
path is the per-user Maildir root (e.g.
"/var/mail/example.com/alice"). body is the full RFC
5322 message bytes. Sessions hold an Arc<Vec<u8>> to
avoid cloning the body across the channel boundary.
Returns io::Error::other("executor died") if the
executor task has panicked or been dropped.
Trait Implementations§
Source§impl Clone for DeliveryExecutor
impl Clone for DeliveryExecutor
Source§fn clone(&self) -> DeliveryExecutor
fn clone(&self) -> DeliveryExecutor
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more