-
Mandatory normative statement MQTT-3.1.2-6.
-
One was confirmed: writing an mqtt packet into a client that disconnected after checking the weak pointer for validity. The rest made sense to change as well.
-
Files are simple serialized bytes prefaced by lengths. File is hashed to verify integrity. This was also a good way preventing unexpected errors when trying to crash the parser by having it load a different file. This change includes some refactoring that was necessary: - It 'fixes' looking at the wrong thread's authentiction. This is still wrong though. It will be fixed by a thread local pointer in the next commit. - Deadlocks with yourself are handled in rwlockguard. - QoSPacketQueue is now a class. - Probably other tweaks.
-
This performs a whole lot better.
-
Also include a few stats.
-
Unsubscribing paths that didn't exist caused creation of null nodes, which subsequent use of the tree crashed on.
-
My IDE didn't understand them for finding symbols, apparently.
-
Also changed the disconnect reason a little: it now shows them all, so I don't have to worry about which one is more important.
-
This includes a timer mechanism.
-
Connected to this is preventing duplicate subscriptions. It's a bit unclear what to do when you get a subscription for the same topic with a different QoS? Change the Qos? Ignore?
-
Also includes fixes to packet parsing that I couldn't make a separate commit for. When it comes to QoS 1, these things are still left, off the top of my head: - vector for qos queue? It helps with ordering and is CPU cache friendly. - Store subscription QoS. - Do retained messages have QoS? - Give session client's name, to access it later.
-
In preparation for clean session and qos.
-
This saves mildly costly calls to find().
-
It's a little faster.
-
Also materializes some concepts about MqttPacket.
-
Roughly...