You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
mediarepo/mediarepo-daemon/mediarepo-worker/src/jobs/mod.rs

23 lines
607 B
Rust

use crate::progress::JobProgressUpdate;
use crate::state_data::StateData;
use async_trait::async_trait;
use mediarepo_core::error::RepoResult;
use mediarepo_logic::dao::repo::Repo;
use tokio::sync::mpsc::Sender;
#[async_trait]
pub trait ScheduledJob {
async fn set_state(&self, state: StateData) -> RepoResult<()>;
async fn run(&self, sender: &mut Sender<JobProgressUpdate>, repo: Repo) -> RepoResult<()>;
fn execution_state(&self) -> JobExecutionState;
}
#[derive(Clone, Copy, Debug, Ord, PartialOrd, Eq, PartialEq)]
pub enum JobExecutionState {
Scheduled,
Running,
Finished,
}