use crate::{error::CompleteQError, user_event::UserEvent};
pub enum EmitResult {
Completed,
Closed,
}
impl EmitResult {
pub fn completed(self) -> Result<(), CompleteQError> {
match self {
Self::Completed => Ok(()),
Self::Closed => Err(CompleteQError::PipeBroken),
}
}
pub fn is_closed(&self) -> bool {
match self {
Self::Completed => false,
Self::Closed => true,
}
}
}
pub enum ReceiveResult<E: UserEvent> {
Success(Option<E::Argument>),
Timeout,
}
impl<E: UserEvent> ReceiveResult<E> {
pub fn success(self) -> Result<Option<E::Argument>, CompleteQError> {
match self {
Self::Success(argument) => Ok(argument),
Self::Timeout => Err(CompleteQError::Timeout),
}
}
pub fn is_timeout(&self) -> bool {
match self {
Self::Timeout => true,
_ => false,
}
}
}
pub(crate) enum EmitInnerResult<E: UserEvent> {
Completed,
Pending(E::Argument),
Closed,
}