use tokio::sync::oneshot;
use tokio_util::sync::CancellationToken;
use crate::core::outcome::TaskOutcome;
pub(crate) type OutcomeTx = oneshot::Sender<TaskOutcome>;
#[derive(Clone, Debug)]
pub(crate) struct RemovalCompletion {
token: CancellationToken,
}
impl RemovalCompletion {
pub(crate) fn new() -> Self {
Self {
token: CancellationToken::new(),
}
}
pub(crate) async fn wait(&self) {
self.token.cancelled().await;
}
pub(super) fn is_complete(&self) -> bool {
self.token.is_cancelled()
}
pub(super) fn complete(&self) {
self.token.cancel();
}
}