24 #ifndef __mqtt_properties_h 25 #define __mqtt_properties_h 28 #include "MQTTProperties.h" 36 #include <initializer_list> 57 void copy(
const MQTTProperty& other);
117 explicit property(
const MQTTProperty& cprop);
123 explicit property(MQTTProperty&& cprop);
155 const MQTTProperty&
c_struct()
const {
return prop_; }
166 return ::MQTTPropertyName(prop_.identifier);
174 template <
typename T>
175 inline T
get(
const property&) {
throw bad_cast(); }
183 return (uint8_t) prop.c_struct().value.byte;
192 return (uint16_t) prop.c_struct().value.integer2;
201 return (int16_t) prop.c_struct().value.integer2;
210 return (uint32_t) prop.c_struct().value.integer4;
219 return (int32_t) prop.c_struct().value.integer4;
228 return (!prop.c_struct().value.data.data) ?
string()
229 :
string(prop.c_struct().value.data.data, prop.c_struct().value.data.len);
238 string name = (!prop.c_struct().value.data.data) ?
string()
239 :
string(prop.c_struct().value.data.data, prop.c_struct().value.data.len);
241 string value = (!prop.c_struct().value.value.data) ?
string()
242 :
string(prop.c_struct().value.value.data, prop.c_struct().value.value.len);
244 return std::make_tuple(std::move(name), std::move(value));
261 MQTTProperties props_;
280 : props_(::MQTTProperties_copy(&other.props_)) {}
286 std::memset(&other.props_, 0,
sizeof(MQTTProperties));
293 props_ = ::MQTTProperties_copy(&cprops);
299 properties(std::initializer_list<property> props);
308 const MQTTProperties&
c_struct()
const {
return props_; }
326 bool empty()
const {
return props_.count == 0; }
331 size_t size()
const {
return size_t(props_.count); }
337 ::MQTTProperties_add(&props_, &prop.
c_struct());
343 ::MQTTProperties_free(&props_);
351 return ::MQTTProperties_hasProperty(const_cast<MQTTProperties*>(&props_),
352 MQTTPropertyCodes(propid)) != 0;
365 return size_t(::MQTTProperties_propertyCount(
366 const_cast<MQTTProperties*>(&props_), MQTTPropertyCodes(propid)));
393 MQTTProperty* prop = MQTTProperties_getPropertyAt(
394 const_cast<MQTTProperties*>(&props.c_struct()),
395 MQTTPropertyCodes(propid), int(idx));
412 return get<T>(props, propid, 0);
419 #endif // __mqtt_properties_h const MQTTProperty & c_struct() const
Definition: properties.h:155
std::bad_cast bad_cast
Definition: exception.h:38
properties(const MQTTProperties &cprops)
Definition: properties.h:292
int16_t get< int16_t >(const property &prop)
Definition: properties.h:200
std::string string
Definition: types.h:40
Definition: properties.h:73
string_pair get< string_pair >(const property &prop)
Definition: properties.h:237
Definition: properties.h:75
uint8_t get< uint8_t >(const property &prop)
Definition: properties.h:182
Definition: properties.h:86
Definition: properties.h:80
Definition: properties.h:81
Definition: properties.h:89
std::tuple< string, string > string_pair
Definition: properties.h:43
Definition: properties.h:69
Definition: properties.h:78
int32_t get< int32_t >(const property &prop)
Definition: properties.h:218
Definition: properties.h:50
Definition: properties.h:82
properties & operator=(const properties &rhs)
Definition: properties.h:72
~properties()
Definition: properties.h:303
void add(const property &prop)
Definition: properties.h:336
Definition: properties.h:74
string get< string >(const property &prop)
Definition: properties.h:227
Definition: properties.h:83
Definition: properties.h:255
Definition: properties.h:84
property & operator=(const property &rhs)
const MQTTProperties & c_struct() const
Definition: properties.h:308
size_t size() const
Definition: properties.h:331
Definition: properties.h:77
bool empty() const
Definition: properties.h:326
Definition: properties.h:67
Definition: properties.h:90
Definition: properties.h:85
Definition: properties.h:87
void clear()
Definition: properties.h:342
code
Definition: properties.h:63
size_t count(property::code propid) const
Definition: properties.h:364
#define PAHO_MQTTPP_EXPORT
Definition: export.h:40
uint32_t get< uint32_t >(const property &prop)
Definition: properties.h:209
property(code c, int32_t val)
bool contains(property::code propid) const
Definition: properties.h:350
Definition: properties.h:70
Definition: properties.h:66
Definition: properties.h:76
properties(const properties &other)
Definition: properties.h:279
Definition: properties.h:88
properties(properties &&other)
Definition: properties.h:285
uint16_t get< uint16_t >(const property &prop)
Definition: properties.h:191
Definition: async_client.h:49
const char * type_name() const
Definition: properties.h:165
Definition: properties.h:68
code type() const
Definition: properties.h:160
Definition: properties.h:64
Definition: properties.h:79
Definition: properties.h:65
Definition: properties.h:71