sheave_core/handlers/measure_acknowledgement.rs
1use crate::messages::Acknowledgement;
2
3/// # Measurement receiving chunk size.
4///
5/// Clients and the server are each required to send [`Acknowledgement`] messages when received chunk sizes exceed their bandwidths.
6/// This trait defines ways to measure receiving chunk sizes for any stream.
7pub trait MeasureAcknowledgement {
8 /// Resets measured count and turns the flag into on, for beginning measurement.
9 fn begin_measuring(&mut self);
10
11 /// Resets measured count and turns the flag into off, for finishing measurement.
12 fn finish_measuring(&mut self);
13
14 /// Adds received chunk size to current one.
15 fn add_amount(&mut self, amount: u32);
16
17 /// Gets current chunk size.
18 fn get_current_amount(&mut self) -> u32;
19
20 /// Wraps current chunk size into an [`Acknowledgement`] message.
21 ///
22 /// [`Acknowledgement`]: crate::messages::Acknowledgement
23 fn as_acknowledgement(&mut self) -> Acknowledgement {
24 Acknowledgement::new(self.get_current_amount())
25 }
26}