Hello Ian, and all,
I'm trying to wrap up the next rev of the C++ library, and have one
nagging issue that I believe I inquired about last time. In the C
library, the MQTTAsync_send() and MQTTAsync_sendMessage() functions
claim:
An MQTTAsync_token
is issued when this function returns successfully.
I can't find how to get this MQTTAsyncToken value until the callback
which happens after the message is delivered.
The problem is that, like the Java client, the C++ client has a
publish() function which returns a token, and that token is supposed
to know the message ID of the outgoing packet. It is reported via:
int itoken::get_message_id();
So, to implement this I need the Message ID (MQTTAsyncToken) as soon
as the message is queued - before returning from the publish()
function.
It seems that the latest version of the ...err... asynchronous mode
of the synchronous library has everything I would need to publish
messages, since the publish functions take a pointer to an MQTTClient_deliveryToken
int MQTTClient_publish(MQTTClient handle, char
*topicName, int payloadlen,
void *payload, int qos, int retained,
MQTTClient_deliveryToken
*dt)
That would be perfect! I would switch over to the
synchronous library, but there are not corresponding asynchronous
versions of connect() and disconnect().
If those existed, I (we?) wouldn't need the asynchronous library at
all.
Thanks,
Frank
|