use tokio::sync::mpsc;
use crate::{core::deferred_drop::DropDomain, events::Bus};
#[cfg(test)]
use crate::core::deferred_drop::TestReservationSource;
use super::ControllerCommand;
mod identity;
mod ownership;
mod submission;
#[derive(Clone)]
pub(crate) struct ControllerHandle {
tx: mpsc::Sender<ControllerCommand>,
bus: Bus,
drop_domain: DropDomain,
#[cfg(test)]
reservation_source: Option<TestReservationSource>,
}
impl ControllerHandle {
pub(super) fn new(
tx: mpsc::Sender<ControllerCommand>,
bus: Bus,
drop_domain: DropDomain,
) -> Self {
Self {
tx,
bus,
drop_domain,
#[cfg(test)]
reservation_source: None,
}
}
#[cfg(test)]
pub(super) fn with_reservation_source(mut self, source: TestReservationSource) -> Self {
self.reservation_source = Some(source);
self
}
}