41 lines
1.2 KiB
Rust
41 lines
1.2 KiB
Rust
//! Error type for mutating pod-registry operations.
|
|
|
|
use std::io;
|
|
use std::path::PathBuf;
|
|
|
|
use manifest::{ScopeError, 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 delegation scope",
|
|
.rule.target.display()
|
|
)]
|
|
NotSubset { spawner: String, rule: ScopeRule },
|
|
#[error("invalid delegation scope: {source}")]
|
|
InvalidScope { source: ScopeError },
|
|
#[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,
|
|
},
|
|
}
|