Paho C ++异步客户端回调vs action_listener vs connected_handler
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Paho C ++异步客户端回调vs action_listener vs connected_handler相关的知识,希望对你有一定的参考价值。
我正在尝试了解使用async_client时Paho MQTT C ++库中各种回调机制的用法和行为,特别是:
- mqtt :: callback
- mqtt :: iaction侦听器
- mqtt :: connection_handler
我要实现的目标:等待成功连接的阻塞初始化方法和成功订阅主题列表(以一个主题开头),以及自动重新连接和如果连接中断,请重新订阅这些主题。
'async_subscribe'示例(https://github.com/eclipse/paho.mqtt.cpp/blob/master/src/samples/async_subscribe.cpp)建议我应该订阅mqtt :: callback :: connected中的主题。但是,它没有显示如何然后等待订阅成功完成。我的理解是,我不应该在连接的回调中的订阅令牌上调用“等待”。如果我设置了一个私有var _subscribeToken来等待,似乎无法保证在等待连接令牌完成后是否已经设置了它,即(伪代码):
void Callback::connected(const std::string& cause){
_subscribeToken = _client->subscribe(topic, qos, nullptr, action_listener);
}
初始化中:
token_ptr connectToken = connect(connectOpts);
connectToken->wait();
_subscribeToken->wait(); // but _subscribeToken may still be null at this point.
connectToken->如果不能保证回调已经被调用,有什么意义?我很可能误会了一些东西,但我想指出正确的方向!
答案
[通过进一步研究C ++ / C库,我能够确定Callback :: connected被称为after
Token :: on_success(因此,在等待已完成之后)。以上是关于Paho C ++异步客户端回调vs action_listener vs connected_handler的主要内容,如果未能解决你的问题,请参考以下文章
Java NIO 非阻塞模式 vs node.js 异步操作