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);
}
}
}