task/manager/
signals.rs

1// Signals module - handles task signal management
2
3use super::*;
4
5impl Manager {
6    pub async fn send_signal(&self, task_identifier: TaskIdentifier, signal: Signal) -> Result<()> {
7        Self::get_task_mutable(&mut *self.0.write().await, task_identifier)
8            .map(|task| task.signals.send(signal))
9    }
10
11    pub async fn pop_signal(&self, task_identifier: TaskIdentifier) -> Result<Option<Signal>> {
12        Self::get_task_mutable(&mut *self.0.write().await, task_identifier)
13            .map(|task| task.signals.pop())
14    }
15
16    pub async fn peek_signal(&self, task_identifier: TaskIdentifier) -> Result<Option<Signal>> {
17        Self::get_task(&*self.0.read().await, task_identifier).map(|task| task.signals.peek())
18    }
19}