Skip to content

Pre-Boost Review Release

Compare
Choose a tag to compare
@ksimicevic ksimicevic released this 10 Oct 08:46
· 34 commits to master since this release

Version 1.0.2 is the latest release before the scheduled formal Boost review and it includes the following changes:

General changes

  • License changed to Boost Software License 1.0.
  • Extended compiler support to include g++9, g++13 and g++14.

Library changes

  • The library fully complies with Boost.Asio (Boost version 1.86):
    • Added support for default completion tokens.
    • Added support for boost::asio::cancel_at, boost::asio::cancel_after, and partial completion tokens.
    • Added support for immediate executors for async_publish, async_subscribe, and async_unsubscribe.
  • Changed the handling of CONNACK reason codes received from the Broker.
    • Previous behaviour: The mqtt_client would only attempt to reconnect to the Broker if it received specific reason codes in the CONNACK packet: unspecified_error, server_unavailable, server_busy, and connection_rate_exceeded.
    • New behaviour: The mqtt_client will attempt to reconnect on any reason code that indicates an error.
  • Modified handling of buffered PUBLISH packets when the broker sets the Receive Maximum property:
    • Previous behaviour: QoS > 0 packets were queued at the end of the buffer, causing QoS = 0 PUBLISH packets to be sent first.
    • New behaviour: Packets now follow the order of async_publish calls. However, some QoS = 0 packets may be transmitted earlier if the Client reaches the Broker's QoS > 0 (Receive Maximum) processing limit.
  • Changed the treatment of the async_run completion handler's associated executor:
    • Previous behaviour: The handler's associated executor would replace mqtt_client's default executor.
    • New behaviour: The handler’s associated executor will execute internal operations without replacing mqtt_client's default executor. If the handler has no associated executor, then the mqtt_client's default executor will be used instead.
  • Fixed an issue preventing async_publish from accepting an empty Topic Name when a Topic Alias was provided in the PUBLISH properties.

Documentation changes

  • Added step-by-step guides for mqtt_client usage.
  • Provided explanations of key library features such as auto-reconnect and retry mechanisms.
  • Added insights into the client's internal workings.
  • Added numerous ready-to-run code examples.

Full Changelog: v1.0.1...v1.0.2