use serde::{Deserialize, Serialize};
use crate::{service::ValorServiceId, types::ValorID};
#[derive(Debug, Clone, Copy, Default, Serialize, Deserialize)]
pub struct ValorWorkerCapacity {
pub total_cpu: u32,
pub total_mem_mb: u32,
pub free_cpu: u32,
pub free_mem_mb: u32,
pub cpu_usage_pct: f32,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct WorkerHeartbeat {
pub id: ValorID,
pub ts_mono_ms: u64,
pub seq_no: u64,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct CapacitySnapshot {
pub id: ValorID,
pub ts_mono_ms: u64,
pub capacity: ValorWorkerCapacity,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ServicesSnapshot {
pub id: ValorID,
pub ts_mono_ms: u64,
pub services: Vec<ValorServiceId>,
pub version: u32,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "snake_case")]
pub enum ValorWorkerEvent {
Heartbeat(WorkerHeartbeat),
ServicesReport(ServicesSnapshot),
CapacityReport(CapacitySnapshot),
}