use std::sync::mpsc;
use std::sync::mpsc::{Receiver, Sender};
use uuid::Uuid;
use super::Message;
use crate::Event;
pub(super) struct AMReceiverHandle {
pub tx: Sender<Event<Message>>,
}
pub struct AMReceiver {
pub rx: Receiver<Event<Message>>,
id: Uuid,
handle: Option<AMReceiverHandle>,
}
impl AMReceiver {
pub fn new() -> AMReceiver {
Default::default()
}
pub fn id(&self) -> Uuid {
self.id
}
pub(super) fn get_handle(&mut self) -> AMReceiverHandle {
self.handle.take().unwrap()
}
}
impl Default for AMReceiver {
fn default() -> AMReceiver {
let (handle_tx, rx) = mpsc::channel();
AMReceiver {
rx,
id: Uuid::new_v4(),
handle: Some(AMReceiverHandle { tx: handle_tx }),
}
}
}