use std::any::Any;
use crate::types::job_id::JobID;
pub trait CallbackMsg: Any + Send + Sync {
fn job_id(&self) -> JobID;
fn set_job_id(&mut self, id: JobID);
fn as_any(&self) -> &dyn Any;
fn as_any_mut(&mut self) -> &mut dyn Any;
}
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash)]
pub struct CallbackMsgBase {
job_id: JobID,
}
impl CallbackMsgBase {
pub fn new() -> Self {
Self {
job_id: JobID::INVALID,
}
}
pub fn with_job_id(job_id: JobID) -> Self {
Self { job_id }
}
pub fn job_id(&self) -> JobID {
self.job_id
}
pub fn set_job_id(&mut self, id: JobID) {
self.job_id = id;
}
}
impl Default for CallbackMsgBase {
fn default() -> Self {
Self::new()
}
}