pub struct NewsDispatchEngine { /* private fields */ }Expand description
DispatchEngine impl backed by the layered nzb-news fetch engine.
Implementations§
Source§impl NewsDispatchEngine
impl NewsDispatchEngine
Sourcepub fn new(config: NewsEngineConfig) -> Self
pub fn new(config: NewsEngineConfig) -> Self
Construct the engine. Does not spawn the downloader —
DispatchEngine::start does that.
Trait Implementations§
Source§impl DispatchEngine for NewsDispatchEngine
impl DispatchEngine for NewsDispatchEngine
Source§fn start(&self)
fn start(&self)
Spawn workers for all currently enabled servers and start the
supervisor task. Idempotent (safe to call more than once).
Source§fn submit_job(&self, job: &NzbJob, progress_tx: Sender<ProgressUpdate>)
fn submit_job(&self, job: &NzbJob, progress_tx: Sender<ProgressUpdate>)
Register a new job and begin dispatching its unfinished articles.
Progress is streamed to
progress_tx as ProgressUpdates; the
channel is closed when the job reaches a terminal state.Source§fn pause_job(&self, job_id: &str)
fn pause_job(&self, job_id: &str)
Pause dispatch for
job_id. In-flight articles finish; no new work
is popped for this job until resume_job.Source§fn resume_job(&self, job_id: &str)
fn resume_job(&self, job_id: &str)
Resume a paused job.
Source§fn cancel_job(&self, job_id: &str)
fn cancel_job(&self, job_id: &str)
Cancel
job_id. In-flight articles may still complete but their
results are discarded; no terminal progress update is emitted beyond
the one triggered by cancellation.Source§fn abort_job(&self, job_id: &str, reason: String)
fn abort_job(&self, job_id: &str, reason: String)
Abort
job_id with a human-readable reason. Emits
ProgressUpdate::JobAborted once outstanding articles drain.Source§fn reconcile_servers(&self)
fn reconcile_servers(&self)
Re-read the server list and adjust workers to match. Call after any
mutation to the server config (add, remove, enable, disable, resize).
Source§fn set_max_worker_idle(&self, _d: Duration)
fn set_max_worker_idle(&self, _d: Duration)
Override the idle-worker eviction threshold. Tests shrink this to
make the watchdog converge in seconds; production uses the default.
Source§fn eviction_count(&self) -> u64
fn eviction_count(&self) -> u64
Lifetime count of worker evictions performed by the heartbeat
watchdog. Increases by 1 each time the supervisor reclaims a stalled
worker. Useful for tests and observability.
Source§fn server_stats_snapshot(&self) -> Vec<(String, ServerAttemptStats)>
fn server_stats_snapshot(&self) -> Vec<(String, ServerAttemptStats)>
Snapshot of per-server lifetime attempt counters. Used by the
queue manager to emit a diagnostic breakdown alongside a job abort
— distinguishes “server returned 430 for every article” (dead NZB)
from “server had auth errors” (transient). Default is empty for
engines that don’t track per-server stats.
Auto Trait Implementations§
impl Freeze for NewsDispatchEngine
impl !RefUnwindSafe for NewsDispatchEngine
impl Send for NewsDispatchEngine
impl Sync for NewsDispatchEngine
impl Unpin for NewsDispatchEngine
impl UnsafeUnpin for NewsDispatchEngine
impl !UnwindSafe for NewsDispatchEngine
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more