1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
use futures::sync::mpsc; use super::CancelReason; pub type ConsumerMessageRx<T> = mpsc::UnboundedReceiver<ConsumerMessage<T>>; pub type ConsumerMessageTx<T> = mpsc::UnboundedSender<ConsumerMessage<T>>; pub type ConsumerEventRx = mpsc::UnboundedReceiver<ConsumerEvent>; pub type ConsumerEventTx = mpsc::UnboundedSender<ConsumerEvent>; #[derive(Debug)] pub enum ConsumerMessage<T> { Write(T), End, } #[derive(PartialEq, Clone, Debug)] pub enum ConsumerEvent { Request(usize), Cancellation(CancelReason), } pub trait Consumer<T> { fn write(&self, data: T); fn end(&self); fn event_stream(&mut self) -> Option<ConsumerEventRx>; fn set_event_stream(&mut self, event_stream: ConsumerEventRx); }