#ifndef MQTT_ASYNC_CLIENT_H_ #define MQTT_ASYNC_CLIENT_H_ #include #include typedef int (*MessageArrived)(void* context, char* topicName, int topicLen, MQTTAsync_message* message); typedef void (*ConnectionLost)(void *context, char *cause); typedef void (*OnSuccess)(void* context, MQTTAsync_successData* response); typedef void (*OnFailure)(void* context, MQTTAsync_failureData* response); class MqttAsyncClient { public: MqttAsyncClient(); ~MqttAsyncClient(); bool onConnect(std::string address, std::string client_id, int port); bool onDisconnect(); bool onSubscribe(std::string topic, int qos = 1); bool onSendMessage(std::string topic, unsigned char* message, int length, int qos = 1); void setCallback(MessageArrived callback); private: static int onMessageArrived(void* context, char* topicName, int topicLen, MQTTAsync_message* message); static void onMessageLost(void *context, char *cause); static void onConnectSuccess(void* context, MQTTAsync_successData* response); static void onConnectFailure(void* context, MQTTAsync_failureData* response); static void onDisconnectSuccess(void* context, MQTTAsync_successData* response); static void onDisconnectFailure(void* context, MQTTAsync_failureData* response); static void onSubscribeSuccess(void* context, MQTTAsync_successData* response); static void onSubscribeFailure(void* context, MQTTAsync_failureData* response); static void onSendMessageSuccess(void* context, MQTTAsync_successData* response); static void onSendMessageFailure(void* context, MQTTAsync_failureData* response); public: private: MQTTAsync m_client_; MQTTAsync_createOptions m_create_opts_; MQTTAsync_connectOptions m_conn_opts_; MessageArrived m_message_arrived_callback_; ConnectionLost m_connect_lost_callback_; OnSuccess m_connect_success_; OnSuccess m_disconnect_success_; OnSuccess m_subscribe_success_; OnSuccess m_send_success_; OnFailure m_connect_failure_; OnFailure m_disconnect_failure_; OnFailure m_subscribe_failure_; OnFailure m_send_failure_; }; #endif