//! Error type for mutating pod-registry operations. use std::io; use std::path::PathBuf; use manifest::ScopeRule; use session_store::SegmentId; /// Errors raised by the mutating pod-registry operations. #[derive(Debug, thiserror::Error)] pub enum ScopeLockError { #[error("I/O error on pods.json: {0}")] Io(#[from] io::Error), #[error("pod name `{0}` is already registered")] DuplicatePodName(String), #[error("requested scope `{}` conflicts with pod `{competitor}` rule `{}`", .rule.target.display(), .competitor_rule.target.display())] WriteConflict { competitor: String, rule: ScopeRule, competitor_rule: ScopeRule, }, #[error( "requested scope `{}` is not within spawner `{spawner}`'s effective scope", .rule.target.display() )] NotSubset { spawner: String, rule: ScopeRule }, #[error("pod `{0}` is not registered")] UnknownPod(String), #[error( "session {segment_id} is already held by pod `{pod_name}` at {}", .socket.display() )] SegmentConflict { segment_id: SegmentId, pod_name: String, socket: PathBuf, }, }