1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
use crate::types::CometdClientEvent;
use async_broadcast::{Receiver, RecvError};
/// Event channel receiver.
#[derive(Debug)]
pub struct CometdEventReceiver<Msg>(pub(crate) Receiver<CometdClientEvent<Msg>>);
impl<Msg> CometdEventReceiver<Msg> {
/// Receive event from event channel.
/// Return `None` if channel was closed.
#[inline(always)]
pub async fn recv(&mut self) -> Option<CometdClientEvent<Msg>> {
match self.0.recv().await {
Ok(data) => Some(data),
Err(RecvError::Closed) => None,
Err(RecvError::Overflowed(_)) => unreachable!(),
}
}
}