mirror of
https://github.com/nushell/nushell.git
synced 2025-08-16 07:07:52 +02:00
Begin job tagging implementation
This commit is contained in:
@ -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 {
|
||||
|
Reference in New Issue
Block a user