Boost C++ Libraries Home Libraries People FAQ More

PrevUpHomeNext

CONNECT properties

The last field in the Variable header of CONNECT packet is a set of Properties. A set contains a Property Length followed by the Properties. A Property consists of an Identifier and a value.

This class extends prop::properties, which provides common functionalities for all property classes. Below is a list of possible CONNECT Properties, along with descriptions of their usage:

Table 1.5. CONNECT properties

Identifier

Value type

Description

session_expiry_interval

uint32_t

Represents the Session Expiry Internal in seconds.

receive_maximum

uint16_t

The maximum number of QoS 1 and QoS 2 publications that the Client is willing to process concurrently.

maximum_packet_size

uint32_t

The maximum packet size in bytes as defined by the specification that the Client is willing to process.

topic_alias_maximum

uint16_t

The highest value that the Client will accept as a Topic Alias sent by the Server.

request_response_information

uint8_t

The value of 0 signals that the Server MUST NOT return Response Information in CONNACK. If the value if 1, it MAY return it.

request_problem_information

uint8_t

The value of 0 signals that the Server MAY return a Reason String or User Properties on a CONNACK or DISCONNECT packet, but MUST NOT send them on any packet other than PUBLISH, CONNACK, or DISCONNECT. If the value is 1, the Server MAY return a Reason String or User Properties where it is allowed.

user_property

std::vector<std::pair<std::string, std::string>>

Name, value pair (UTF-8 String Pair) defining User Property. There can be multiple pairs in one packet. The meaning of these properties is not defined by the specification.

authentication_method

std::string

A UTF-8 Encoded String containing the name of the authentication method used for extended authentication.

authentication_data

std::string

Binary Data containing authentication data. The contents of the data are defined by the authentication method.


Usage

After obtaining an instance of boost::mqtt5::connect_props, the subscript operator can be used to access a Property.

The Identifiers listed in the table above are available within the boost::mqtt5::prop namespace for Property access.

[Note] Note

When accessing a property value, the subscript operator will return a std::optional of the value type for all properties, except for boost::mqtt5::prop::user_property, where it will return an instance of std::vector<std::pair<std::string, std::string>>.

Example

The following example shows how to set a Property value:

boost::mqtt5::connect_props props;
props[boost::mqtt5::prop::session_expiry_interval] = 1200;
props[boost::mqtt5::prop::receive_maximum] = uint16_t(100);
props[boost::mqtt5::prop::user_property].emplace_back("name", "value");

The following example shows how to retrieve a Property value:

std::optional<std::string> auth_method = props[boost::mqtt5::prop::authentication_method];
if (auth_method.has_value())
    // authentication method property was previously set
else
    // authentication method property was not set

std::vector<std::pair<std::string, std::string>>& user_props = props[boost::mqtt5::prop::user_property];
if (!user_props.empty())
    // user property was previously set
else
    // user property was not set

PrevUpHomeNext