use crate::config::Config;
use crate::sim::components::ComponentId;
use crate::sim::events::EventQueue;
use crate::sim::memory::GlobalMemory;
use crate::sim::packet::Packet;
use crate::sim::stats::Stats;
#[derive(Debug)]
pub struct HandleCtx<'a> {
pub scheduler: &'a mut EventQueue,
pub stats: &'a mut Stats,
pub memory: &'a mut GlobalMemory,
pub config: &'a Config,
pub cycle: u64,
pub self_id: ComponentId,
}
pub trait Handle {
fn handle(&mut self, packet: Packet, source: ComponentId, ctx: &mut HandleCtx<'_>);
}