Skip to main content

mqtt5_protocol/types/
subscribe.rs

1use super::QoS;
2
3#[derive(Debug, Clone)]
4pub struct SubscribeOptions {
5    pub qos: QoS,
6    pub no_local: bool,
7    pub retain_as_published: bool,
8    pub retain_handling: RetainHandling,
9    pub subscription_identifier: Option<u32>,
10}
11
12impl Default for SubscribeOptions {
13    fn default() -> Self {
14        Self {
15            qos: QoS::AtMostOnce,
16            no_local: false,
17            retain_as_published: false,
18            retain_handling: RetainHandling::SendAtSubscribe,
19            subscription_identifier: None,
20        }
21    }
22}
23
24impl SubscribeOptions {
25    #[must_use]
26    pub fn with_subscription_identifier(mut self, id: u32) -> Self {
27        self.subscription_identifier = Some(id);
28        self
29    }
30}
31
32#[derive(Debug, Clone, Copy, PartialEq, Eq)]
33pub enum RetainHandling {
34    SendAtSubscribe = 0,
35    SendIfNew = 1,
36    DontSend = 2,
37}