Next version TODO list #261
Replies: 3 comments 6 replies
-
Thanks - in the discussion here I suggested the following for V1:
so work on any of those would be great. If you want to take a stab at any of those then go for it. A few other ideas:
|
Beta Was this translation helpful? Give feedback.
-
Personally I feel that a single 'PublishComplete' type callback would be sufficient for most users. However it is possible that some QOS2 users will want to know when the
Unfortunately it's a bit more complex than that. The connection may be down at the time Publish is called, or the server |
Beta Was this translation helpful? Give feedback.
-
I prefer this approach because it's consistent across all QOS levels, and is what most users are likely to be after (a lot of users will not understand the various packets involved) - this is consistent with the C client (which uses
This will, at minimum, be a function pointer, so generally 64 bits. For the vast majority of users 1-2 would be in memory at a time, for high volume publishers this may be significantly higher but I suspect it would be rare to have more than 65535 messages queued (the limit of packet IDs) so that would be 256kb RAM (not really significant). This probably understates this a bit as the functions will generally have some context but I think demonstrates that it's workable.
Correct - but the Pythin Paho client immediately issues a message identifier to the message, and returns that to the user - this library does not (the Go V3 client did use that approach) when using a queue. Issuing ID's to messages immediately imposes some limits (i.e. 65535 messages queued) and I believe complicates things (you need additional flags to indicate if the message has actually been sent, and the queue code becomes tightly coupled to the session code).
My preference would be to allow the caller to make this choice (i.e. don't start a goroutine in the library). Starting a GoRoutine within the library means that the order in which the callbacks run is not guaranteed, and means that syncronisation (Mutex etc) will be needed (which may be possible to avoid if run in sequence).
It can, but that depends upon the connection and broker settings. If there is a low |
Beta Was this translation helpful? Give feedback.
-
Hi,
I have some bandwidth and wondering if there is a TODO list for the next version. I would be happy to contribute.
Beta Was this translation helpful? Give feedback.
All reactions