mirror of
https://github.com/hl-archive-node/nanoreth.git
synced 2025-12-06 10:59:55 +00:00
fix: ensure final message is always delivered (#4569)
This commit is contained in:
@ -11,6 +11,7 @@ use std::{
|
||||
use tokio::sync::mpsc::{
|
||||
self,
|
||||
error::{SendError, TryRecvError, TrySendError},
|
||||
OwnedPermit,
|
||||
};
|
||||
|
||||
/// Wrapper around [mpsc::unbounded_channel] that returns a new unbounded metered channel.
|
||||
@ -142,6 +143,18 @@ impl<T> MeteredSender<T> {
|
||||
Self { sender, metrics: MeteredSenderMetrics::new(scope) }
|
||||
}
|
||||
|
||||
/// Tries to acquire a permit to send a message.
|
||||
///
|
||||
/// See also [Sender](mpsc::Sender)'s `try_reserve_owned`.
|
||||
pub fn try_reserve_owned(&self) -> Result<OwnedPermit<T>, TrySendError<mpsc::Sender<T>>> {
|
||||
self.sender.clone().try_reserve_owned()
|
||||
}
|
||||
|
||||
/// Returns the underlying [Sender](mpsc::Sender).
|
||||
pub fn inner(&self) -> &mpsc::Sender<T> {
|
||||
&self.sender
|
||||
}
|
||||
|
||||
/// Calls the underlying [Sender](mpsc::Sender)'s `try_send`, incrementing the appropriate
|
||||
/// metrics depending on the result.
|
||||
pub fn try_send(&self, message: T) -> Result<(), TrySendError<T>> {
|
||||
|
||||
Reference in New Issue
Block a user