mqtt_cpp
connect_flags.hpp
Go to the documentation of this file.
1 // Copyright Takatoshi Kondo 2015
2 //
3 // Distributed under the Boost Software License, Version 1.0.
4 // (See accompanying file LICENSE_1_0.txt or copy at
5 // http://www.boost.org/LICENSE_1_0.txt)
6 
7 #if !defined(MQTT_CONNECT_FLAGS_HPP)
8 #define MQTT_CONNECT_FLAGS_HPP
9 
10 #include <cstdint>
11 #include <mqtt/namespace.hpp>
12 #include <mqtt/publish.hpp>
13 
14 namespace MQTT_NS {
15 
16 namespace connect_flags {
17 
18 constexpr char const clean_session = 0b00000010;
19 constexpr char const clean_start = 0b00000010;
20 constexpr char const will_flag = 0b00000100;
21 constexpr char const will_retain = 0b00100000;
22 constexpr char const password_flag = 0b01000000;
23 constexpr char const user_name_flag = static_cast<char>(0b10000000u);
24 
25 constexpr bool has_clean_session(char v) {
26  return (v & clean_session) != 0;
27 }
28 
29 constexpr bool has_clean_start(char v) {
30  return (v & clean_start) != 0;
31 }
32 
33 constexpr bool has_will_flag(char v) {
34  return (v & will_flag) != 0;
35 }
36 
37 constexpr retain has_will_retain(char v) {
38  return ((v & will_retain) != 0)
39  ? retain::yes
40  : retain::no;
41 }
42 
43 constexpr bool has_password_flag(char v) {
44  return (v & password_flag) != 0;
45 }
46 
47 constexpr bool has_user_name_flag(char v) {
48  return (v & user_name_flag) != 0;
49 }
50 
51 constexpr void set_will_qos(char& v, qos qos_value) {
52  v |= static_cast<char>(static_cast<std::uint8_t>(qos_value) << 3);
53 }
54 
55 constexpr qos will_qos(char v) {
56  return static_cast<qos>((v & 0b00011000) >> 3);
57 }
58 
59 } // namespace connect_flags
60 
61 } // namespace MQTT_NS
62 
63 #endif // MQTT_CONNECT_FLAGS_HPP
constexpr bool has_password_flag(char v)
Definition: connect_flags.hpp:43
constexpr char const will_retain
Definition: connect_flags.hpp:21
constexpr char const user_name_flag
Definition: connect_flags.hpp:23
constexpr char const will_flag
Definition: connect_flags.hpp:20
constexpr qos will_qos(char v)
Definition: connect_flags.hpp:55
constexpr retain has_will_retain(char v)
Definition: connect_flags.hpp:37
constexpr bool has_user_name_flag(char v)
Definition: connect_flags.hpp:47
constexpr bool has_clean_session(char v)
Definition: connect_flags.hpp:25
constexpr bool has_clean_start(char v)
Definition: connect_flags.hpp:29
constexpr char const clean_start
Definition: connect_flags.hpp:19
constexpr void set_will_qos(char &v, qos qos_value)
Definition: connect_flags.hpp:51
constexpr bool has_will_flag(char v)
Definition: connect_flags.hpp:33
constexpr char const clean_session
Definition: connect_flags.hpp:18
constexpr char const password_flag
Definition: connect_flags.hpp:22
Definition: any.hpp:27
retain
Definition: publish.hpp:42
qos
Definition: subscribe_options.hpp:34