diff options
Diffstat (limited to 'src/worker_ws.rs')
-rw-r--r-- | src/worker_ws.rs | 16 |
1 files changed, 11 insertions, 5 deletions
diff --git a/src/worker_ws.rs b/src/worker_ws.rs index 5f0e47c..526de82 100644 --- a/src/worker_ws.rs +++ b/src/worker_ws.rs @@ -163,8 +163,9 @@ impl State { worker.task_kinds = task_kinds; } WorkerRequest::Metadata { key, data } => { - let m = self.metadata.entry(key).or_default(); + let m = self.metadata.entry(key.clone()).or_default(); m.extend(data); + self.send_webui_task_update(&key); } WorkerRequest::Enqueue { key, @@ -173,12 +174,14 @@ impl State { if ignore_complete { if !self.loading.contains(&key) { self.complete.remove(&key); - self.queue.insert(key); + self.queue.insert(key.clone()); + self.send_webui_task_update(&key); self.dispatch_work(); } } else { if !(self.complete.contains(&key) || self.loading.contains(&key)) { - self.queue.insert(key); + self.queue.insert(key.clone()); + self.send_webui_task_update(&key); self.dispatch_work(); } } @@ -187,11 +190,13 @@ impl State { if force { self.queue.remove(&key); self.loading.remove(&key); - self.complete.insert(key); + self.complete.insert(key.clone()); + self.send_webui_task_update(&key); } else { if worker.assigned_tasks.remove(&key) { self.loading.remove(&key); - self.complete.insert(key); + self.complete.insert(key.clone()); + self.send_webui_task_update(&key); } else { bail!("task was not assigned") } @@ -231,6 +236,7 @@ impl State { for (w, key) in to_send { self.queue.remove(&key); self.loading.insert(key.clone()); + self.send_webui_task_update(&key); self.send_to_worker( w, WorkerResponse::Work { |