use serde::{Deserialize, Serialize};
use super::state::ExecutionState;
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct CancelReason {
pub code: CancelCode,
pub detail: Option<String>,
pub requested_at: i64,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
#[serde(rename_all = "snake_case")]
pub enum CancelCode {
User,
Timeout,
ParentDropped,
SystemShutdown,
Internal,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct CancelInfo {
pub reason: CancelReason,
pub observed_at: i64,
#[serde(rename = "state_before")]
pub state_before: Box<ExecutionState>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct FailureInfo {
pub message: String,
pub kind: FailureKind,
pub occurred_at: i64,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
#[serde(rename_all = "snake_case")]
pub enum FailureKind {
LuaError,
EngineError,
Timeout,
Other,
}