79 lines
2.2 KiB
Rust
79 lines
2.2 KiB
Rust
//! Runner types for supervisor.
|
|
//!
|
|
//! Note: Runners are now just tracked by ID (string).
|
|
//! The supervisor only tracks which runners are registered and queues jobs to them.
|
|
//! Actual runner execution is handled externally by the runner processes.
|
|
|
|
/// Log information structure with serialization support
|
|
#[derive(Debug, Clone, serde::Serialize, serde::Deserialize)]
|
|
pub struct LogInfo {
|
|
pub timestamp: String,
|
|
pub level: String,
|
|
pub message: String,
|
|
}
|
|
|
|
/// Result type for runner operations
|
|
pub type RunnerResult<T> = Result<T, RunnerError>;
|
|
|
|
/// Errors that can occur during runner operations
|
|
#[derive(Debug, thiserror::Error)]
|
|
pub enum RunnerError {
|
|
#[error("Actor '{actor_id}' not found")]
|
|
ActorNotFound { actor_id: String },
|
|
|
|
#[error("Actor '{actor_id}' is already running")]
|
|
ActorAlreadyRunning { actor_id: String },
|
|
|
|
#[error("Actor '{actor_id}' is not running")]
|
|
ActorNotRunning { actor_id: String },
|
|
|
|
#[error("Failed to start actor '{actor_id}': {reason}")]
|
|
StartupFailed { actor_id: String, reason: String },
|
|
|
|
#[error("Failed to stop actor '{actor_id}': {reason}")]
|
|
StopFailed { actor_id: String, reason: String },
|
|
|
|
#[error("Timeout waiting for actor '{actor_id}' to start")]
|
|
StartupTimeout { actor_id: String },
|
|
|
|
#[error("Job queue error for actor '{actor_id}': {reason}")]
|
|
QueueError { actor_id: String, reason: String },
|
|
|
|
#[error("Configuration error: {reason}")]
|
|
ConfigError { reason: String },
|
|
|
|
#[error("Invalid secret: {0}")]
|
|
InvalidSecret(String),
|
|
|
|
#[error("IO error: {source}")]
|
|
IoError {
|
|
#[from]
|
|
source: std::io::Error,
|
|
},
|
|
|
|
#[error("Redis error: {source}")]
|
|
RedisError {
|
|
#[from]
|
|
source: redis::RedisError,
|
|
},
|
|
|
|
#[error("Job error: {source}")]
|
|
JobError {
|
|
#[from]
|
|
source: hero_job::JobError,
|
|
},
|
|
|
|
#[error("Job client error: {source}")]
|
|
JobClientError {
|
|
#[from]
|
|
source: hero_job_client::ClientError,
|
|
},
|
|
|
|
#[error("Job '{job_id}' not found")]
|
|
JobNotFound { job_id: String },
|
|
|
|
#[error("Authentication error: {message}")]
|
|
AuthenticationError { message: String },
|
|
}
|
|
|