| 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
 |