dope-runtime 0.36.0

Thread-per-core execution and process lifecycle for dope
use crate::shutdown;

mod run;

pub(crate) use run::run;

#[derive(Clone, Copy, Eq, PartialEq)]
pub enum Outcome {
    Quiesced,
    Forced,
}

#[must_use]
pub struct Report<Q> {
    request: shutdown::Requested<Q>,
    outcome: Outcome,
}

impl<Q> Report<Q> {
    pub(crate) const fn new(request: shutdown::Requested<Q>, outcome: Outcome) -> Self {
        Self { request, outcome }
    }

    pub const fn outcome(&self) -> Outcome {
        self.outcome
    }

    pub fn into_parts(self) -> (shutdown::Requested<Q>, Outcome) {
        (self.request, self.outcome)
    }
}