use crate::child_runner::attempt::TaskExit;
use crate::id::types::{Attempt, ChildId, Generation, SupervisorPath};
use crate::spec::child::ChildSpec;
#[derive(Debug, Clone, PartialEq, Eq)]
pub enum ChildRuntimeStatus {
Registered,
Starting,
Running,
Ready,
Exited,
}
#[derive(Debug, Clone)]
pub struct ChildRuntime {
pub id: ChildId,
pub path: SupervisorPath,
pub spec: ChildSpec,
pub status: ChildRuntimeStatus,
pub generation: Generation,
pub attempt: Attempt,
pub restart_count: u64,
pub last_exit: Option<TaskExit>,
}
impl ChildRuntime {
pub fn new(spec: ChildSpec, path: SupervisorPath) -> Self {
Self {
id: spec.id.clone(),
path,
spec,
status: ChildRuntimeStatus::Registered,
generation: Generation::initial(),
attempt: Attempt::first(),
restart_count: 0,
last_exit: None,
}
}
}