impl SavedDatagrams { /// The number of datagrams that are saved during the handshake when /// keys to decrypt them are not yet available. pubconst CAPACITY: usize = 4;
/// Return whether either store of datagrams is currently full. pubconstfn is_either_full(&self) -> bool { self.handshake.len() == Self::CAPACITY || self.application_data.len() == Self::CAPACITY
}
pubfn save(&mutself, epoch: Epoch, d: Datagram, t: Instant) { let store = self.store(epoch);
if store.len() < Self::CAPACITY {
qdebug!("saving {epoch:?} datagram of {} bytes", d.len());
store.push(SavedDatagram { d, t });
} else {
qinfo!("not saving {epoch:?} datagram of {} bytes", d.len());
}
}
#[test] fn capacity_is_enforced() { letmut saved = SavedDatagrams::default(); let t = now();
// Fill to exactly CAPACITY. for _ in0..SavedDatagrams::CAPACITY {
saved.save(Epoch::ApplicationData, make_dgram(), t);
}
assert!(saved.is_either_full());
// One more should be silently dropped.
saved.save(Epoch::ApplicationData, make_dgram(), t);
saved.make_available(Epoch::ApplicationData); let taken = saved.take_saved();
assert_eq!(taken.len(), SavedDatagrams::CAPACITY);
}
}
Messung V0.5 in Prozent
¤ Dauer der Verarbeitung: 0.13 Sekunden
(vorverarbeitet am 2026-08-25)
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.