Begin job tagging implementation

This commit is contained in:
cosineblast
2025-04-10 22:13:54 -03:00
parent b0f9cda9b5
commit 71600fd2b6
7 changed files with 114 additions and 9 deletions

View File

@ -38,6 +38,10 @@ impl Jobs {
self.jobs.get(&id)
}
pub fn lookup_mut(&mut self, id: JobId) -> Option<&mut Job> {
self.jobs.get_mut(&id)
}
pub fn remove_job(&mut self, id: JobId) -> Option<Job> {
if self.last_frozen_job_id.is_some_and(|last| id == last) {
self.last_frozen_job_id = None;
@ -134,13 +138,15 @@ pub enum Job {
pub struct ThreadJob {
signals: Signals,
pids: Arc<Mutex<HashSet<u32>>>,
tag: Option<String>,
}
impl ThreadJob {
pub fn new(signals: Signals) -> Self {
pub fn new(signals: Signals, tag: Option<String>) -> Self {
ThreadJob {
signals,
pids: Arc::new(Mutex::new(HashSet::default())),
tag,
}
}
@ -197,10 +203,18 @@ impl Job {
Job::Frozen(frozen_job) => frozen_job.kill(),
}
}
pub fn tag(&self) -> Option<&String> {
match self {
Job::Thread(thread_job) => thread_job.tag.as_ref(),
Job::Frozen(frozen_job) => frozen_job.tag.as_ref(),
}
}
}
pub struct FrozenJob {
pub unfreeze: UnfreezeHandle,
pub tag: Option<String>,
}
impl FrozenJob {