1use thiserror::Error;
2
3pub type RuntimeResult<T> = Result<T, RuntimeError>;
4
5#[derive(Debug, Error)]
6pub enum RuntimeError {
7 #[error("invalid Runtime request: {0}")]
8 InvalidRequest(String),
9 #[error("Runtime unit {unit_id:?} was not found")]
10 NotFound { unit_id: String },
11 #[error("Runtime request {request_id:?} conflicts with a prior request")]
12 RequestConflict { request_id: String },
13 #[error("Runtime request {request_id:?} for unit {unit_id:?} was not found")]
14 RequestNotFound { unit_id: String, request_id: String },
15 #[error(
16 "Runtime unit {unit_id:?} rejected stale generation {requested}; current generation is {current}"
17 )]
18 StaleGeneration {
19 unit_id: String,
20 requested: u64,
21 current: u64,
22 },
23 #[error("Runtime unit {unit_id:?} has conflicting content for generation {generation}")]
24 GenerationConflict { unit_id: String, generation: u64 },
25 #[error("Runtime request deadline has expired: {0}")]
26 DeadlineExceeded(String),
27 #[error("Runtime provider lacks required capabilities: {0:?}")]
28 UnsupportedCapabilities(Vec<String>),
29 #[error("Runtime provider is unavailable: {0}")]
30 ProviderUnavailable(String),
31 #[error("Runtime transport failed: {0}")]
32 Transport(String),
33 #[error("Runtime protocol failed: {0}")]
34 Protocol(String),
35}