use std::sync::mpsc::Receiver;
use crate::{Envelope, Mailbox, Service};
pub struct ServiceJig<S: Service> {
pub mailbox: Mailbox<S>,
service: S,
receiver: Receiver<Envelope<S>>,
}
impl<S: Service> ServiceJig<S> {
pub fn prepare(service: S) -> Self {
let (mailbox, receiver) = Mailbox::create();
ServiceJig {
service,
receiver,
mailbox,
}
}
pub fn process_all(&mut self) {
let iter = self.receiver.try_iter();
for mut m in iter {
let _x = m.deliver_to(&mut self.service);
}
}
pub fn get_service(&self) -> &S {
&self.service
}
pub fn get_service_mut(&mut self) -> &mut S {
&mut self.service
}
}