use crate::{MessagePtr, timer::TimerId};
pub type Pid = usize;
pub trait ProcessHandle {
fn on_start(&mut self);
fn on_message(&mut self, from: Pid, message: MessagePtr);
fn on_timer(&mut self, id: TimerId);
}
impl<T: ProcessHandle + ?Sized> ProcessHandle for Box<T> {
fn on_start(&mut self) {
(**self).on_start()
}
fn on_message(&mut self, from: Pid, message: MessagePtr) {
(**self).on_message(from, message)
}
fn on_timer(&mut self, id: TimerId) {
(**self).on_timer(id)
}
}
pub(crate) type ProcessHandlePtr = Box<dyn ProcessHandle + Send>;