7 #if !defined(MQTT_PUBLISH_HPP)
8 #define MQTT_PUBLISH_HPP
13 #include <boost/assert.hpp>
22 constexpr
bool is_dup(std::uint8_t v) {
23 return (v & 0b00001000) != 0;
27 return static_cast<qos>((v & 0b00000110) >> 1);
31 return (v & 0b00000001) != 0;
34 constexpr
void set_dup(std::uint8_t& fixed_header,
bool dup) {
35 if (
dup) fixed_header |= 0b00001000;
36 else fixed_header &=
static_cast<std::uint8_t
>(~0b00001000);
47 enum class dup : std::uint8_t
65 constexpr
publish_options(
qos value) : data_(static_cast<std::uint8_t>(static_cast<std::uint8_t>(value) << 1))
81 {
return static_cast<retain>(data_ & 0b00000001); }
83 {
return static_cast<dup>(data_ & 0b00001000); }
85 {
return static_cast<qos>((data_ & 0b00000110) >> 1); }
87 explicit constexpr
operator std::uint8_t()
const {
return data_; }
90 std::uint8_t data_ = 0;
107 default:
return "invalid_retain";
123 default:
return "invalid_dup";
constexpr bool is_dup(std::uint8_t v)
Definition: publish.hpp:22
constexpr qos get_qos(std::uint8_t v)
Definition: publish.hpp:26
constexpr void set_dup(std::uint8_t &fixed_header, bool dup)
Definition: publish.hpp:34
constexpr bool is_retain(std::uint8_t v)
Definition: publish.hpp:30
dup
Definition: publish.hpp:48
retain
Definition: publish.hpp:42
constexpr publish_options operator|(retain lhs, dup rhs)
Definition: publish.hpp:93
std::ostream & operator<<(std::ostream &os, connect_return_code val)
Definition: connect_return_code.hpp:43
qos
Definition: subscribe_options.hpp:34
constexpr char const * retain_to_str(retain v)
Definition: publish.hpp:103
constexpr char const * dup_to_str(dup v)
Definition: publish.hpp:119
Definition: publish.hpp:53
constexpr publish_options operator|(retain rhs) const
Definition: publish.hpp:71
constexpr publish_options(publish_options &&)=default
constexpr qos get_qos() const
Definition: publish.hpp:84
constexpr publish_options(retain value)
Definition: publish.hpp:63
constexpr publish_options()=default
constexpr publish_options & operator|=(dup rhs)
Definition: publish.hpp:77
constexpr publish_options(std::uint8_t value)
Definition: publish.hpp:61
constexpr publish_options operator|(publish_options rhs) const
Definition: publish.hpp:70
constexpr publish_options(dup value)
Definition: publish.hpp:64
constexpr publish_options & operator|=(publish_options rhs)
Definition: publish.hpp:75
constexpr publish_options & operator|=(retain rhs)
Definition: publish.hpp:76
constexpr publish_options(publish_options const &)=default
constexpr publish_options operator|(qos rhs) const
Definition: publish.hpp:73
~publish_options()=default
constexpr retain get_retain() const
Definition: publish.hpp:80
constexpr publish_options & operator=(publish_options &&)=default
constexpr dup get_dup() const
Definition: publish.hpp:82
constexpr publish_options & operator|=(qos rhs)
Definition: publish.hpp:78
constexpr publish_options & operator=(publish_options const &)=default
constexpr publish_options operator|(dup rhs) const
Definition: publish.hpp:72
constexpr publish_options(qos value)
Definition: publish.hpp:65