#pragma once #include "pahoc/mqtt_async.h" #include "message/unpacket.hpp" #include #include class RslidarMqttAsyncClient : public MqttAsyncClient { public: RslidarMqttAsyncClient() = default; void init(); bool setCloudData(const std::string &topic, pcl::PointCloud::Ptr &cloud); bool getCloudData(const std::string &topic, pcl::PointCloud::Ptr &cloud); bool getCloudData(const std::string &topic, pcl::PointCloud::Ptr &cloud); bool getCloudData(const std::string &topic, pcl::PointCloud::Ptr &cloud, const uint8_t *color); private: static int CloudDataArrived(MqttAsyncClient *client, char *topicName, int topicLen, MQTTAsync_message *message); public: private: std::mutex m_cloud_mutex; std::map m_topics_; std::map::Ptr> m_cloud_; std::map::Ptr> m_full_cloud_; std::map m_topic_time_; };