-
Subscriptions are now stored in a tree-like structure, to quickly find the correct callbacks. This not only reduces the complexity from O(n) to O(logn), but also doesn't require stuff like regex. It does however require slightly more memory.
-
std::move() is doing the right thing either way.
-
Just for small strings it will copy, and only large strings will actually be moved.
-
This includes CONNACK and SUBACK.
-
By using Happy Eyeballs, we stagger connections of a host resolves into multiple IPs. This is useful for IPv6 / IPv4 hosts, where one of the two can stutter. Sadly, creating a connection is rather complex, with many odd things that can happen along the way. For example, a writeable socket doesn't mean it is actually connected; it can also mean the socket is in an error state. This implementation is inspired by my own work on OpenTTD's variant of this.
-
All administration should been taken care of now, and the only thing remaining is creating connect/disconnect and implementing the sendXXX functions.
-
This contains no actual code yet, just the scaffolding to get started.