use thiserror::Error;
#[derive(Error, Debug)]
pub enum DaemonError {
#[error("Failed to bind to socket: {0}")]
BindFailed(String),
#[error("Failed to acquire lock: {0}")]
LockFailed(String),
#[error("No worker for repo={repo_root}, actor={actor_id}")]
WorkerNotFound { repo_root: String, actor_id: String },
#[error("Worker already exists for repo={repo_root}, actor={actor_id}")]
WorkerExists { repo_root: String, actor_id: String },
#[error("Grit error: {0}")]
Grit(#[from] libgrite_core::GriteError),
#[error("Git error: {0}")]
Git(#[from] libgrite_git::GitError),
#[error("IPC error: {0}")]
Ipc(#[from] libgrite_ipc::IpcError),
#[error("NNG error: {0}")]
Nng(String),
#[error("IO error: {0}")]
Io(#[from] std::io::Error),
#[error("JSON error: {0}")]
Json(#[from] serde_json::Error),
#[error("Channel error: {0}")]
Channel(String),
#[error("Shutdown requested")]
Shutdown,
}
impl From<nng::Error> for DaemonError {
fn from(e: nng::Error) -> Self {
DaemonError::Nng(e.to_string())
}
}