123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 |
- // Copyright Takatoshi Kondo 2015
- //
- // Distributed under the Boost Software License, Version 1.0.
- // (See accompanying file LICENSE_1_0.txt or copy at
- // http://www.boost.org/LICENSE_1_0.txt)
- #if !defined(MQTT_CONNECT_FLAGS_HPP)
- #define MQTT_CONNECT_FLAGS_HPP
- #include <cstdint>
- #include <mqtt/namespace.hpp>
- #include <mqtt/publish.hpp>
- namespace MQTT_NS {
- namespace connect_flags {
- constexpr char const clean_session = 0b00000010;
- constexpr char const clean_start = 0b00000010;
- constexpr char const will_flag = 0b00000100;
- constexpr char const will_retain = 0b00100000;
- constexpr char const password_flag = 0b01000000;
- constexpr char const user_name_flag = static_cast<char>(0b10000000u);
- constexpr bool has_clean_session(char v) {
- return (v & clean_session) != 0;
- }
- constexpr bool has_clean_start(char v) {
- return (v & clean_start) != 0;
- }
- constexpr bool has_will_flag(char v) {
- return (v & will_flag) != 0;
- }
- constexpr retain has_will_retain(char v) {
- return ((v & will_retain) != 0)
- ? retain::yes
- : retain::no;
- }
- constexpr bool has_password_flag(char v) {
- return (v & password_flag) != 0;
- }
- constexpr bool has_user_name_flag(char v) {
- return (v & user_name_flag) != 0;
- }
- constexpr void set_will_qos(char& v, qos qos_value) {
- v |= static_cast<char>(static_cast<std::uint8_t>(qos_value) << 3);
- }
- constexpr qos will_qos(char v) {
- return static_cast<qos>((v & 0b00011000) >> 3);
- }
- } // namespace connect_flags
- } // namespace MQTT_NS
- #endif // MQTT_CONNECT_FLAGS_HPP
|