我正在使用 paho-mqtt c++ 库。我正在使用异步通信模型。我创建了 Callaback 类并实现了必要的方法。我还创建了一个 mqtt_client 类,它包含传输和接收队列以及连接、send_data、get_recieved_data 等几种方法。
class mqtt_client
{
private:
std::queue<std::string> receive_queue, transmit_queue;
public:
bool connect(void){
mqtt::async_client client(SERVER_ADDRESS, CLIENT_ID);
callback cb(client, connOpts);
client.set_callback(cb);
}
bool send_data(const std::string& data){
transmit_queue.push(data);
//if not tranmitting then start transmitting
}
std::string get_recieved_data(void);
};
class callback : public virtual mqtt::callback
{
public:
void connected(const std::string& cause) override;
void connection_lost(const std::string& cause) override;
void delivery_complete(mqtt::delivery_token_ptr tok) override; //Pop data from mqtt_client::transmit_queue (if available)
void message_arrived(mqtt::const_message_ptr msg) override; //Push data to mqtt_client::receive_queue
};
在 callback::message_arrived 方法的实现中。我希望复制消息的有效负载并将其推送到位于 mqtt_client 中的 mqtt_client::receive_queue。
类似地,callback::delivery_complete 检查 mqtt_client::transmit_queue 中是否有数据可用,如果存在更多数据,它将传输下一条消息。
我想知道我在这里有什么选择。我不希望将 mqtt_client 对象发送到类回调。
在 Andorid 中,我使用意图或界面来实现这一点。