- Added PINGRESP timeout and made internal force_disconnect() calling in the strand. (#649)
- Added async_client example. (#647)
- Made async_connect actually async. (#643)
- Added missing packet types to switch case. (#642)
- Enabled cmake target configuration. (#632)
- Made mqtt::shared_any force_move the constructor parameter into the member variable. (#629)
- Added io_context getter for servers. (#627)
- Tracked total bytes sent and received on socket. (#625, #641)
- <<<< breaking change >>>> Replaced use of boost::asio::deadline_timer with boost::asio::steady_timer. (#621, #626)
- Added getter for
client_id_
. (#619) - Use the
-fsyntax-only
flag instead of--preprocess
for header checking (#617) - Added inflight subscribe and unsubscribe packet_id clean up mechanism. (#612)
- Added protocol error processing if control packets are received before connect/connack is received. (#611)
- Fixed uninitialized pubrel reason code. (#607)
- Fixed inefficient packet on puback/pubrec/pubrel/pubcomp. (#604)
- Added getters for publish and pubrel message. (#603)
- <<<< breaking change >>>> Fixed message version of for_each_store. (#602)
- Skipped properties phase if remaining length is 0. (#600)
- Updated v5_message.hpp pubrel fixed header flags. (#599)
- <<<< breaking change >>>> Updated minimum boost requirement to 1.67.0. (#595)
- Use std::move instead of std::forward in null_strand. (#594)
- Removed boost::static_visitor inheritance. (#589)
- Refined CI. (#587, #590, #613, #618)
- Added redirect supporting function and an example. (#585)
- Fixed warnings. (#582, #596, #620)
- <<<< breaking change >>>> Removed packet_id from restoring functions. (#581)
- Rifined examples. (#580)
- Added native_handle getting function. (#577)
- Fixed missing base class hander call. (#576)
- Fixed
accumulate
type. (#570) - Added workaround of libstdc++ std::tuplestd::any bug. (#568, #569, #571)
- Use mqtt::force_move for test_broker. (#562)
- Added no property overloads for MQTT v3.1.1 users. (#561)
- Fixed missing argument on async_send_pubrel. (#560)
- Migrate CI from travis-ci to github actions. (#553, #556, #564)
- <<<< breaking change >>>> Modified buffer lifetime management strategy to meet Boost.Asio CompletionToken. (#552)
- <<<< breaking change >>>> Added noexcept to event handler virtual functions. User needs to catch the exception in the handlers if an exception is thrown. (#551)
- <<<< breaking change >>>> Introduced publish_options and subscribe_options. Remove *_dup functions. (#548, #579)
- <<<< breaking change >>>> Removed acquired_* family. Now non acquired name version has the overload that takes packet_id parameter. (#547)
- Fixed packet_id leak on QoS2 publish. (backported) (#541, #542, #543)
- Added explicit destructor to clients. (#481)
- Fixed warnings. (#480)
- Added conversion function from
mqtt::qos
tosuback_return_code
andv5::suback_reason_code
. (#478) - Added boost::asio::ssl::context getter. Set
[[deprecated]]
attribute to wrapped function for boost::asio::ssl::context. They will be removed on verion 8.0.0. (#472)- mqtt_cpp is now separated from boost::asio::ssl::context detail.
- Fixed boost::type_erasure namespace. (#467)
- Refactoring. (#465)
- Improved receive packet processing. (#462)
- Fixed comments. (#454, #455)
- Added
constexpr
. (#451, #461) - Use virtual function based polymorphism on endpoint receive packet processing. Existing APIs are preserved as
callable_overlay
. (#444)- Thanks to de-virtualization optimization, it is achieved zero-overhead.
- <<<< breaking change >>>> Updated
set_accept_handler()
's parameter to shared_ptr of the endpoint. (#443) - <<<< breaking change >>>> Updated
start_session()
's parameter tomqtt::any
. It only for life keeping purpose. (#442) - <<<< breaking change >>>> Remove optional from puback, pubrec, pubrel, and pubcomp. (#441, #470, #476, #477)
- Fixed invalid next packet read on disconnect packet process. (#439)
- <<<< breaking change >>>> Remove optional from the parameter
suback_return_code
(MQTT v3.1.1) of suback handler. (#434) - <<<< breaking change >>>> Replaced
MQTT_NO_TLS
withMQTT_USE_TLS
and default value is false. Now, all configure macro has positive meaning. (#428) - Improved build system. (#425, #459)
- Used old style boost::type_erasure. The new style causes compile error if
-pedantic
flag is set. (#423) - Introduced include dependency checking build option. (#422)
- <<<< breaking change >>>> Improved parameters of the publish handler. parsing
fixed_header
is no longer required. (#421) - Replaced boost::asio deprecated API with new ones. (#419, 466)
- Set
[[deprecated]]
attribute to derecated variadic parameter version of suback/unsuback family. They will be removed on verion 8.0.0. (#417) - Fixed BOOST_VERSION comparison typo. (#413)
- Improved travis-ci. (#412)
- Added boost::multi_index debug flag to travis-ci. (#406)
- <<<< breaking change >>>> Minimum boost required version is 1.66.0. (#403)
- Fixed lack of next read packet bug. (#402)
- Added missing include. (#398)
- <<<< breaking change >>>> Introduced enum class instead of std::uint8_t. (#395, #397, #401, #414, #415, #438)
- Removed invalid WebSocket code from the test. (#394)
- <<<< breaking change >>>> Added subscribe_options class. (#387, #388, #393)
- subscribe_options can be created from
std::uint8_t
so the impact of existing code is limited.
- subscribe_options can be created from
- <<<< breaking change >>>> Removed deprecated APIs. (#384)
- Fixed packet_id leak on QoS2 publish. (backported) (#541, #542, #543)
- Fixed server side endpoint lifetime management problem. (#439, #440)
- Fixed receive stop problem when unsuback handler is not set. (#408)
- Updated minimum boost requirement to 1.66.0. (#410)
- NOTE: Boost minimum requirement should be updated at v6.0.0. So this release considered the update as a bug fix, not major version up.
- Fixed invalid subscribe qos comparison on receive. (#385)
- Fixed sync subscribe/unsubscribe with properties APIs dispatch to deprecated APIs problem. (#383)
- Fixed moved from object access problem. (#378)
- Fixed unexpected copy fallback of move operations. (#378)
- Fixed compile error of
acquired_async_publish_dup()
. (#376)
- Supressed warnings. (#367, #368, #369, #370, #371)
- Set
[[deprecated]]
attribute to derecated APIs. They will be removed on verion 7.0.0. (#364, #372) - Added
mqtt::buffer
based APIs. (#364) - Added user defined namespace support. User can define
MQTT_NS
(defaultmqtt
). (#360) - Improved test. (#357)
- Improved test broker. (#353)
- Added allocation fuction for
mqtt::buffer
. (#349) - Supported old version of boost type_erasure. (#347)
- <<<< breaking change >>>> Adde zero copy receiving functionality. Callback handlers take
mqtt::buffer
parameter instead ofmqtt::string_view
. It can hold the lifetime. (#339, #358, #359, ) - Improved CI. (#333, #346)
- Improved CI. (#330)
- Fixed invalid std::any inclusion on mqtt::any. (#328)
- Fixed invalid pointer comparison. (#324)
- Fixed user_property value length. (#323)
- Added
store
type alias for each properties. (#319) - Fixed
BOOST_MPL_LIMIT_LIST_SIZE
comparison. (#318) - Removed
BOOST_ASSERT
from test code to improve exception message. (#315) - Code refactoring. (#313)
- Added default parameter to
async_send_pubrel
'slife_keeper
. (#312) - Added async version of stored message sending after
CONNACK
received. (#311) - <<<< breaking change >>>> Removed unnecessery callback invokation. (#309)
- Fixed moved from object access. (#308)
- <<<< breaking change >>>> Added properties and life_keeper parameter to pubrel and async_publrel. (#307)
- Added reuse_address flag to the test broker to avoid "address already in use" on travis-ci. (#306)
- <<<< breaking change >>>> Fixed TCP accepting process. After TCP accepting, do the next accepting process immediately. Due to the fix, Socket is updated to shared_ptr from unique_ptr. (#299)
- <<<< breaking change >>>> Added underlying connect timeout. It can treat well with TCP connected but TLS handshake not sending attack. (#296)
- Added stream output operator for properties. (#293)
- Replaced byte sequence creation macro with function. (#291)
- Fixed static boost support. (#290)
- <<<< breaking change >>>> Fixed property allocation management. (#288)
- Improved MSVC support for test. (#286)
- Added codecov for CI. (#285, #276, #275, #273)
- Added
MQTT_BUILD_EXAMPLES
flag to cmake to shorten CI time. (#284) - Added non_ref/ref types conversion for properties. (#283)
- Added tests. (#278, #276)
- Improve travis-ci. (#274)
- Migrate from appveyor azure devops build pipelines that supports 10 parallel build. (#270)
- Fixed pingreq async/sync send. (#267)
- Added getting ssl keylog callback for debugging. (#256)
- Fixed re-listen logic for servers. Now we can re-listen after accept is failed. (#252, #254)
- Fixed restore lifetime management to avoid accessing memory after destroyed (#251)
- Removed BOOST_ASSERT checking in the case that actually happens if invalid message is received (#249, #250)
- Added MQTT v5 support (#226, #245, #257, #258, #259)
- Added connection overwrite behavior on
test_broker
(#210) - Added
async_client
andsync_client
to avoid misusing async and sync APIs.client
is still remained that can use both sync and async APIs. (#208) - Added concatenating
const_buffer
functionality on asynchronous packet sending (#207) - Improved documents (#198, #214, #219, #229, #235)
- Added switching option between
std
andboost
(#188, #209) - Improved build mechanisim (#184, #201, #253)
- Code refactoring (#183, #189, #190, #193, #195, #197, #199, #202, #203, #211, #215, #216, #220, #227, #234, #236, #238, #239, #240, #242)
- Support configure time switches for using std::varient or std::optional instead of the boost versions (#182)
- Allow inheriting classes to construct mqtt::client (#181)
- <<<< Breaking change >> Replaced fixed_header type from
char
tostd::uint8_t
. Fixed-Wconversion
warnings. See https://github.com/redboltz/mqtt_cpp/pull/180/files (#180)
- Fixed inefficient passed by value. (#174)
- Fixed unsugscribe message packet id position for continuours buffer. (#167)
- Fixed subscribe message remaining length buffer size. (#165)
- Added broker example. (#164)
- Improved CI. (#161)
- Added 32bit packet id support. It is out of MQTT spec. (#160, #163, #166, #168)
- Added store assertion to detect internal logic error. (#157)
- Fixed life keeper storing timing. (#156, #159)
- Added getter for handlers. (#155)
- Fixed async write callback. (#154)
- Fixed ambiguous function call on C++17 visit call. (#153)
- Improved packet id allocating algorithm. (#152, #162)
- Removed throwing exception when error on close happens. (#151)
- Added re-listen support after listining socket closed. (#150)
- Fixed string_view definition (#146)
- Added string (UTF-8) checking. It is disabled by default. Define MQTT_USE_STR_CHECK to enable it. (#142, #143)
- Improved documents (#141, #131, #172, #173)
- Improved build mechanisim (#140, #147, #148, #170)
- Added custom next mqtt message read handler setting mechanism (#139)
- << Breaking change >> mqtt_cpp requires full C++14 feature.
- Added boost::asio::const_buffer interface. User can use it as topic name and contents(payload). (#127, #134, #136)
- Improved CI environment. (#129, #130)
- Fixed packet_id leak. (#132)
- Fixed queuing message leak. (#133)
- Added disconnect timeout. (#135)
- Added connect status check function. (#131)
- Added packet length checking handler for variable length MQTT packet. (#121)
- Fixed doxygen comments. (#119)
- Improved payload memory management. (#118)
- Fixed malformed connack (send by client) problem. (#117)
- Fixed missing packet length check on connect. (#116)
- Improved pingreq sending timing. (#115)
- << Breaking change >> Updated close_handler and error_handler invoking rule. When the socket is closed, if user calls disconnect() and the socket closed by server cleanly, then close_handler is called, otherwise error_handler is called.
- Added publish and pubrel message serialize mechanism. (#111)
- Added boost beast support. (#106)
- Added boost 1.66.0 asio support. (#106)
- Supported Boost 1.66.0 new asio interface. (#106)
- Updated beast to v124. (#107)
- If Boost version is 1.66.0 or later, use Boost.Beast. (#107)
- Improved tests. (#102, #104)
- Improved assetions. (#105)
- Added TLS verifying setup functions. (#100)
- Update beast. (#94)
- Fixed WebSocket strand management. (#93, #95)
- Fixed endpoint's move constructor and assingment operator deletion (#92)
- Update beast. (#90)
- Fixed qos2 publish handler multiple call guard.(#89)
- Renamed to
mqtt_cpp
frommqtt_client_cpp
. (#88) - Improved tests. (#87)
- Added MQTT server functionality (#84)
- Supressed warnings. (#82)
- Fixed WebSocket close. (#81)
- Added tls context settings. (#80, #83)
- Fixed force_disconnect. (#79)
- Removed TLS manual shutdown call. (#78)
- Fixed timer management algorithm. (#76)
- Fixed pingreq sending timing. (#75)
- Added bad timming mqtt command receiving guard. (#70)
- Added offline publish (Clean Session: false, qos: at_least_once, exactly_once). (#69)
- Prepared for OpenSSL 1.1.0 support. (#68)
- Added explicit packet_id acquieing operation. (#67)
- Used C++14 depended code conditionally. (#62, #63)
- Added WebSocket support. (#61, #66)
- Fixed strand. (#60)
- Added strand to shutdown. (#59)
- Fixed the type of qos on async_send_publish. (#58)
- Added async_disconnect function. (#57)
- Fixed async subscribe/unsubscribe. (#56)
- Improved async operations. (#55)
- Fixed SSL_R_SHORT_READ as normal close, not error. (#54)
- Replaced pair with tuple. (#53)
- Fixed endpoint memory management. (#52)
- Fixed force disconnect logic. (#50)
- Added remaining length getting function. (#48)
- Added publish with dup flag function. (#47)
- Added for_each function for stored data. (#44)
- Fixed pubrel re-send algorithm. (#43)
- Added pubrel sending interface. (#41)
- Added sent after callback function. (#39)
- Improved CI environment. (#37)
- Improved documents. (#35, #36)
- Removed generic lambda to meet C++11 (#34)
- Added stored packet clearing function. (#32)
- Fixed QoS2 pubrel sending timing.(#31, #46, #49)
- Fixed remaining length handling logic. (#30)
- Added subscribe and unsubscribe with vector. (#29)
- Added suback with vector. (#28)
- Fixed async subscribe bug. (#26)
- Added connect() with socket. (#25)
- Fixed packet_id accqireing algorithm. (#24, #27)
- Fixed storing QoS1 and 2 packet mechanism. (#23)
- Supported async_write operation. (#21)
- Separated MQTT core from client. Core can be used as server connection. (#20)
- Fixed queued message clearing problem. (#18)
- Fixed implicit char conversion problem. (#17)
- Fixed missing remaining length checking. (#16)
- Updated README.md version number.
- Implemented all mqtt functionarities.