diff options
author | Alex Auvolat <alex@adnab.me> | 2022-12-14 12:51:16 +0100 |
---|---|---|
committer | Alex Auvolat <alex@adnab.me> | 2022-12-14 12:51:42 +0100 |
commit | d56c472712df7c064387429a5af73d3bc0eb438d (patch) | |
tree | d3d73490ae3167a228ee91f69a583242c572cd9f /src/util/background/job_worker.rs | |
parent | 2183518edccadef47cdeaf6476033b52d8832d6e (diff) | |
download | garage-d56c472712df7c064387429a5af73d3bc0eb438d.tar.gz garage-d56c472712df7c064387429a5af73d3bc0eb438d.zip |
Refactor background runner and get rid of job worker
Diffstat (limited to 'src/util/background/job_worker.rs')
-rw-r--r-- | src/util/background/job_worker.rs | 48 |
1 files changed, 0 insertions, 48 deletions
diff --git a/src/util/background/job_worker.rs b/src/util/background/job_worker.rs deleted file mode 100644 index 2568ea11..00000000 --- a/src/util/background/job_worker.rs +++ /dev/null @@ -1,48 +0,0 @@ -//! Job worker: a generic worker that just processes incoming -//! jobs one by one - -use std::sync::Arc; - -use async_trait::async_trait; -use tokio::sync::{mpsc, Mutex}; - -use crate::background::worker::*; -use crate::background::*; - -pub(crate) struct JobWorker { - pub(crate) index: usize, - pub(crate) job_chan: Arc<Mutex<mpsc::UnboundedReceiver<(Job, bool)>>>, - pub(crate) next_job: Option<Job>, -} - -#[async_trait] -impl Worker for JobWorker { - fn name(&self) -> String { - format!("Job worker #{}", self.index) - } - - async fn work(&mut self, _must_exit: &mut watch::Receiver<bool>) -> Result<WorkerState, Error> { - match self.next_job.take() { - None => return Ok(WorkerState::Idle), - Some(job) => { - job.await?; - Ok(WorkerState::Busy) - } - } - } - - async fn wait_for_work(&mut self, must_exit: &watch::Receiver<bool>) -> WorkerState { - loop { - match self.job_chan.lock().await.recv().await { - Some((job, cancellable)) => { - if cancellable && *must_exit.borrow() { - continue; - } - self.next_job = Some(job); - return WorkerState::Busy; - } - None => return WorkerState::Done, - } - } - } -} |