fn check_integrity()

in quic/s2n-quic-transport/src/sync/data_sender.rs [467:502]


    fn check_integrity(&self) {
        if cfg!(debug_assertions) {
            // TODO: assert!(self.lost.is_subset(&self.pending));
            if self.pending.is_empty() {
                assert!(self.lost.is_empty());
                assert!(self.transmissions.is_empty());
                assert_eq!(self.buffer.head(), self.buffer.total_len());
                assert_eq!(
                    self.transmission_offset,
                    self.buffer.total_len(),
                    "transmission offset should equal buffer length when pending is empty"
                );
            }

            if !self.pending.is_empty() {
                assert!(
                    !self.lost.is_empty() || self.transmission_offset < self.buffer.total_len() || !self.transmissions.is_empty(),
                    "pending: {:?}, lost: {:?}, enqueued: {:?}, total_len: {:?}, transmissions: {:?}",
                    self.pending,
                    self.lost,
                    self.transmission_offset,
                    self.buffer.total_len(),
                    self.transmissions.is_empty()
                );
            }

            if let Some(start) = self.pending.min_value() {
                assert_eq!(self.buffer.head(), start);
            }

            if self.flow_controller().is_blocked() {
                use transmission::interest::{Interest, Provider};
                assert_ne!(self.get_transmission_interest(), Interest::NewData);
            }
        }
    }