Paho C ++异步客户端回调vs action_listener vs connected_handler

问题描述 投票:0回答:1

我正在尝试了解使用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++ mqtt paho pahocpp
1个回答
0
投票
[通过进一步研究C ++ / C库,我能够确定Callback :: connected被称为

after

Token :: on_success(因此,在等待已完成之后)。
© www.soinside.com 2019 - 2024. All rights reserved.