1use crate::packet::publish::QoSWithPacketIdentifier;
4
5#[repr(u8)]
6#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Copy, Clone)]
7pub enum QualityOfService {
8 Level0 = 0,
9 Level1 = 1,
10 Level2 = 2,
11}
12
13impl From<QoSWithPacketIdentifier> for QualityOfService {
14 fn from(qos: QoSWithPacketIdentifier) -> Self {
15 match qos {
16 QoSWithPacketIdentifier::Level0 => QualityOfService::Level0,
17 QoSWithPacketIdentifier::Level1(_) => QualityOfService::Level1,
18 QoSWithPacketIdentifier::Level2(_) => QualityOfService::Level2,
19 }
20 }
21}
22
23#[cfg(test)]
24mod test {
25 use super::*;
26 use std::cmp::min;
27
28 #[test]
29 fn min_qos() {
30 let q1 = QoSWithPacketIdentifier::Level1(0).into();
31 let q2 = QualityOfService::Level2;
32 assert_eq!(min(q1, q2), q1);
33
34 let q1 = QoSWithPacketIdentifier::Level0.into();
35 let q2 = QualityOfService::Level2;
36 assert_eq!(min(q1, q2), q1);
37
38 let q1 = QoSWithPacketIdentifier::Level2(0).into();
39 let q2 = QualityOfService::Level1;
40 assert_eq!(min(q1, q2), q2);
41 }
42}