pub const READINESS_SOCKET_PATH: &str = "/run/pact/ready.sock";
pub const READINESS_FILE_PATH: &str = "/run/pact/ready";
pub trait ReadinessGate: Send + Sync {
fn is_ready(&self) -> bool;
fn wait_ready(&self) -> Result<(), ReadinessError>;
}
#[derive(Debug, thiserror::Error)]
pub enum ReadinessError {
#[error("boot failed: {reason}")]
BootFailed { reason: String },
#[error("timeout waiting for readiness")]
Timeout,
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn well_known_paths() {
assert!(READINESS_SOCKET_PATH.starts_with("/run/pact/"));
assert!(READINESS_FILE_PATH.starts_with("/run/pact/"));
}
}