Added convenience methods that ignore lag

This commit is contained in:
Dion Dokter 2022-06-16 14:19:16 +02:00
parent 790426e2f6
commit f92f46f489

View file

@ -274,6 +274,16 @@ impl<'a, T: Clone> Subscriber<'a, T> {
SubscriberWaitFuture { subscriber: self }
}
/// Wait for a published message (ignoring lag results)
pub async fn next_message_pure(&mut self) -> T {
loop {
match self.next_message().await {
WaitResult::Lagged(_) => continue,
WaitResult::Message(message) => break message,
}
}
}
/// Try to see if there's a published message we haven't received yet.
///
/// This function does not peek. The message is received if there is one.
@ -289,6 +299,19 @@ impl<'a, T: Clone> Subscriber<'a, T> {
}
}
}
/// Try to see if there's a published message we haven't received yet (ignoring lag results).
///
/// This function does not peek. The message is received if there is one.
pub fn try_next_message_pure(&mut self) -> Option<T> {
loop {
match self.try_next_message() {
Some(WaitResult::Lagged(_)) => continue,
Some(WaitResult::Message(message)) => break Some(message),
None => break None,
}
}
}
}
impl<'a, T: Clone> Drop for Subscriber<'a, T> {