bonsaidb_local/tasks/manager/
managed_job.rs

1use std::fmt::Debug;
2
3use crate::tasks::handle::Id;
4use crate::tasks::manager::Manager;
5use crate::tasks::traits::Executable;
6use crate::tasks::Job;
7
8#[derive(Debug)]
9pub struct ManagedJob<J, Key> {
10    pub id: Id,
11    pub job: J,
12    pub manager: Manager<Key>,
13    pub key: Option<Key>,
14}
15
16impl<J, Key> Executable for ManagedJob<J, Key>
17where
18    J: Job,
19    Key: Clone + std::hash::Hash + Eq + Send + Sync + Debug + 'static,
20{
21    fn execute(&mut self) {
22        let result = self.job.execute();
23
24        self.manager
25            .job_completed(self.id, self.key.as_ref(), result);
26    }
27}