use tokio_util::sync::{CancellationToken, WaitForCancellationFuture};
#[derive(Debug, Clone, Default)]
#[repr(transparent)]
pub struct CancellationListener {
token: CancellationToken,
}
impl CancellationListener {
pub fn child_token(&self) -> CancellationToken {
self.token.child_token()
}
pub fn is_cancelled(&self) -> bool {
self.token.is_cancelled()
}
pub fn cancelled(&self) -> WaitForCancellationFuture<'_> {
self.token.cancelled()
}
}
impl From<CancellationToken> for CancellationListener {
fn from(token: CancellationToken) -> Self {
Self { token }
}
}
impl From<&CancellationToken> for CancellationListener {
fn from(token: &CancellationToken) -> Self {
Self {
token: token.clone(),
}
}
}