s2n_quic_core/transmission/
constraint.rs1#[cfg(feature = "generator")]
5use bolero_generator::prelude::*;
6
7#[cfg(test)]
8use bolero::generator::*;
9
10#[derive(Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord)]
11#[cfg_attr(any(feature = "generator", test), derive(TypeGenerator))]
12pub enum Constraint {
13 None,
15 RetransmissionOnly,
17 CongestionLimited,
19 AmplificationLimited,
21}
22
23#[test]
24fn ordering_test() {
25 assert!(Constraint::None < Constraint::RetransmissionOnly);
26 assert!(Constraint::RetransmissionOnly < Constraint::CongestionLimited);
27 assert!(Constraint::CongestionLimited < Constraint::AmplificationLimited);
28}
29
30impl Constraint {
31 #[inline]
33 pub fn is_amplification_limited(self) -> bool {
34 matches!(self, Self::AmplificationLimited)
35 }
36
37 #[inline]
39 pub fn is_congestion_limited(self) -> bool {
40 matches!(self, Self::CongestionLimited)
41 }
42
43 #[inline]
46 pub fn is_retransmission_only(self) -> bool {
47 matches!(self, Self::RetransmissionOnly)
48 }
49
50 #[inline]
52 pub fn can_transmit(self) -> bool {
53 self.is_none()
54 }
55
56 #[inline]
58 pub fn can_retransmit(self) -> bool {
59 self.can_transmit() || self.is_retransmission_only()
60 }
61
62 #[inline]
64 fn is_none(self) -> bool {
65 matches!(self, Self::None)
66 }
67}