bonsaidb_local/tasks/manager/
managed_job.rs1use 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}