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}