pub struct GenericBufferedSender<T, U>where
T: Serialize,{
sender: GenericSender<T>,
buffer: RefCell<Vec<U>>,
buffering: Box<dyn Fn(Vec<U>) -> T>,
max_buffer: usize,
}Expand description
A buffered sender that collects individual messages (U) and sends them
as a single batched message (T) via a user-provided packing closure.
The buffer is flushed automatically when it reaches max_buffer items,
or explicitly via flush.
send_immediate
combines the current buffer contents with the new message into a single
packed message, ensuring ordering without an extra flush step.
Fields§
§sender: GenericSender<T>§buffer: RefCell<Vec<U>>§buffering: Box<dyn Fn(Vec<U>) -> T>§max_buffer: usizeImplementations§
Source§impl<T: Serialize, U> GenericBufferedSender<T, U>
impl<T: Serialize, U> GenericBufferedSender<T, U>
Sourcepub fn new(
sender: GenericSender<T>,
buffering: Box<dyn Fn(Vec<U>) -> T>,
max_buffer: usize,
) -> Self
pub fn new( sender: GenericSender<T>, buffering: Box<dyn Fn(Vec<U>) -> T>, max_buffer: usize, ) -> Self
Create a new buffered sender.
sender— the underlyingGenericSender<T>that delivers packed messages.buffering— closure that packs aVec<U>into a singleT.max_buffer— automatic flush is triggered when the buffer reaches this size.
Sourcepub fn set_max_buffer(&mut self, max: usize)
pub fn set_max_buffer(&mut self, max: usize)
Change the auto-flush threshold.
Sourcepub fn send(&self, msg: U) -> SendResult
pub fn send(&self, msg: U) -> SendResult
Buffer a message for later batched delivery.
If the buffer reaches max_buffer items an automatic flush is triggered.
Sourcepub fn send_immediate(&self, msg: U) -> SendResult
pub fn send_immediate(&self, msg: U) -> SendResult
Deliver a message immediately, combining it with any
buffered messages into a single packed T.
Sourcepub fn flush(&self) -> SendResult
pub fn flush(&self) -> SendResult
Flush all buffered messages by packing them into a single T and
sending it.
Trait Implementations§
Auto Trait Implementations§
impl<T, U> !Freeze for GenericBufferedSender<T, U>
impl<T, U> !RefUnwindSafe for GenericBufferedSender<T, U>
impl<T, U> !Send for GenericBufferedSender<T, U>
impl<T, U> !Sync for GenericBufferedSender<T, U>
impl<T, U> Unpin for GenericBufferedSender<T, U>
impl<T, U> UnsafeUnpin for GenericBufferedSender<T, U>
impl<T, U> !UnwindSafe for GenericBufferedSender<T, U>
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§impl<T> MaybeBoxed<Box<T>> for T
impl<T> MaybeBoxed<Box<T>> for T
Source§fn maybe_boxed(self) -> Box<T>
fn maybe_boxed(self) -> Box<T>
Convert
Source§impl<T> MaybeBoxed<T> for T
impl<T> MaybeBoxed<T> for T
Source§fn maybe_boxed(self) -> T
fn maybe_boxed(self) -> T
Convert