use thiserror::Error;
pub type InstanceResult<T> = Result<T, InstanceError>;
#[derive(Debug, Error)]
pub enum InstanceError {
#[error("Instance with PID {pid} not found")]
NotFound { pid: u32 },
#[error("Cannot delete instance '{instance_name}': still running with PIDs {pids:?}")]
StillRunning {
instance_name: String,
pids: Vec<u32>,
},
#[error("I/O error: {0}")]
Io(#[from] std::io::Error),
#[error("Cannot register instance: PID {pid} already tracked by '{existing_instance}'")]
DuplicatePid {
pid: u32,
existing_instance: String,
},
#[error("Failed to kill PID {pid}: {reason}")]
KillFailed { pid: u32, reason: String },
}