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 异步操作

Java NIO 非阻塞模式 vs node.js 异步操作

在JAVA里 啥是回调函数啊.?

来自回调 c# 的未处理异常错误

Ubuntu虚拟机安装evpp开源库说明

C# socket服务器端 多线程客户端 如何少量使用CPU