use ractor_cluster::RactorClusterMessage;
use righ_dm_rs::RighIpv4Addr;
use serde::{Deserialize, Serialize};
use crate::{
common::task::{ValorMasterTask, ValorTaskError, ValorTaskOutput, ValorTaskStatus},
types::ValorID,
worker::ValorWorkerEvent,
};
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct TaskStatusUpdate {
pub task_id: String,
pub worker_id: ValorID,
pub status: ValorTaskStatus,
pub output: Option<ValorTaskOutput>,
pub error: Option<ValorTaskError>,
}
#[derive(Debug, Clone, RactorClusterMessage)]
pub enum ValorMasterMessage {
SouthboundRegisterWorker(ValorID, RighIpv4Addr),
SouthboundUnregisterWorker(ValorID),
SouthboundWorkerStateUpdate(ValorWorkerEvent),
InternalWorkerRefResolved(ValorID, String),
InternalCleanupTick,
CreateTask(ValorMasterTask),
UpdateTaskStatus(TaskStatusUpdate),
CancelTask(String),
GetTask(String),
ListTasks,
}