* Fix the bug where inline subscribers do not receive messages after all non-inline clients unsubscribe.
* Bypassing asdine/storm and directly using bbolt.
* Fixed erroneous removal of FileContributor.
---------
Co-authored-by: JB <28275108+mochi-co@users.noreply.github.com>
* Update README example to reflect new listeners API
* Update README example to reflect new listeners API
---------
Co-authored-by: JB <28275108+mochi-co@users.noreply.github.com>
* Implementing Pebble as a persistence database hook.
* Fixed failing test cases.
* Add Pebble DB configuration for file-based configuration, optimize part of the code.
* Resolve test failure issues and perform code optimization.
* Optimized the test cases.
* Moving go cl.WriteLoop() out of NewClient() and placing it in server.attachClient().
* Call cl.Stop() to cancel the context, update cl.State with information such as disconnected time, and set the stopCause.
* update README-CN.md
---------
Co-authored-by: JB <28275108+mochi-co@users.noreply.github.com>
* fix when no max msg expiry interval is set
* fix expiry handling of clearExpiredInflights
* Modify it to handle cases where the MaximumMessageExpiryInterval is set to 0 or math.MaxInt64 for no expiry, and optimize some of the code and test cases.
* Set MaximumMessageExpiryInterval to 0 or math.MaxInt64 for no expiration, and optimize some of the code and test cases.
* Addressing the issue of numeric overflow with expiration values.
* Only when server.Options.Capabilities.MaximumMessageExpiryInterval is set to math.MaxInt64 for no expiry.
* fix typo in README.md
* There is no need to verify whether 'maximumExpiry' is 'math.MaxInt64' within 'client.ClearInflight()
* Optimize the code to make it easier to understand.
* Differentiate the handling of 'expire' in MQTTv5 and MQTTv3; skip expiration checks if MaximumMessageExpiryInterval is set to 0; optimize code and test cases.
* When MaximumMessageExpiryInterval is set to 0, it should not affect the message's own expiration(for v5) evaluation.
* Adding client.ClearExpiredInflights() to clear expired messages, while client.ClearInflights() is used to clear all inflight messages.
---------
Co-authored-by: JB <28275108+mochi-co@users.noreply.github.com>
Co-authored-by: werben <werben@aliyun.com>
Co-authored-by: werben <werben@qq.com>
* Add a Chinese version of the README.md.
* rename README_CN.md to README-CN.md
* Optimize some aspects
* Correct some translation errors.
* Optimize some aspects.
* Initial completion of all translations.
* Optimize some aspects.
* Optimize some aspects.
* Refinement of translations.