Refactor MQTT callback function names for consistency. Changed MessageCallback and ConnectionCallback to MessageCb and ConnectionCb in mqtt.hpp, mqtt.cpp, and custom_robot.cpp to improve code clarity and maintainability.

This commit is contained in:
2025-09-09 09:56:13 +08:00
parent e7bfce9dcb
commit cf58ad202a
3 changed files with 20 additions and 26 deletions

View File

@@ -15,8 +15,8 @@ namespace custom {
class MqttClient { class MqttClient {
public: public:
using MessageCallback = std::function<void(const std::string& topic, const std::string& payload)>; using MessageCb = std::function<void(const std::string& topic, const std::string& payload)>;
using ConnectionCallback = std::function<void(bool connected)>; using ConnectionCb = std::function<void(bool connected)>;
MqttClient(const std::string& broker, int port, const std::string& clientId); MqttClient(const std::string& broker, int port, const std::string& clientId);
~MqttClient(); ~MqttClient();
@@ -31,8 +31,8 @@ public:
bool publish(const std::string& topic, const std::string& payload, int qos = 1, bool retain = false); bool publish(const std::string& topic, const std::string& payload, int qos = 1, bool retain = false);
bool publishJson(const std::string& topic, const nlohmann::json& json, int qos = 1, bool retain = false); bool publishJson(const std::string& topic, const nlohmann::json& json, int qos = 1, bool retain = false);
void setMessageCallback(MessageCallback callback); void setMessageCb(MessageCb cb);
void setConnectionCallback(ConnectionCallback callback); void setConnectionCb(ConnectionCb cb);
// Message queue for async processing // Message queue for async processing
void startMessageProcessor(); void startMessageProcessor();
@@ -56,8 +56,8 @@ private:
MQTTClient client_; MQTTClient client_;
MessageCallback messageCallback_; MessageCb messageCb_;
ConnectionCallback connectionCallback_; ConnectionCb connectionCb_;
std::atomic<bool> connected_; std::atomic<bool> connected_;
std::atomic<bool> reconnecting_; std::atomic<bool> reconnecting_;

View File

@@ -178,8 +178,8 @@ bool CustomRobot::initializeMqtt() {
mqttClient_ = std::make_unique<MqttClient>(broker, port, clientId); mqttClient_ = std::make_unique<MqttClient>(broker, port, clientId);
using namespace std::placeholders; using namespace std::placeholders;
mqttClient_->setMessageCallback(std::bind(&CustomRobot::onMqttMessage, this, _1, _2)); mqttClient_->setMessageCb(std::bind(&CustomRobot::onMqttMessage, this, _1, _2));
mqttClient_->setConnectionCallback(std::bind(&CustomRobot::onMqttConnection, this, _1)); mqttClient_->setConnectionCb(std::bind(&CustomRobot::onMqttConnection, this, _1));
mqttClient_->startMessageProcessor(); mqttClient_->startMessageProcessor();

View File

@@ -13,13 +13,11 @@ MqttClient::MqttClient(const std::string& broker, int port, const std::string& c
ss << "tcp://" << broker << ":" << port; ss << "tcp://" << broker << ":" << port;
serverURI_ = ss.str(); serverURI_ = ss.str();
// 初始化连接选项
connOpts_ = MQTTClient_connectOptions_initializer; connOpts_ = MQTTClient_connectOptions_initializer;
connOpts_.keepAliveInterval = 20; connOpts_.keepAliveInterval = 20;
connOpts_.cleansession = 1; connOpts_.cleansession = 1;
connOpts_.reliable = 0; // 异步发送 connOpts_.reliable = 0; // 异步发送
// 创建 MQTT 客户端
int rc = MQTTClient_create(&client_, serverURI_.c_str(), clientId_.c_str(), int rc = MQTTClient_create(&client_, serverURI_.c_str(), clientId_.c_str(),
MQTTCLIENT_PERSISTENCE_NONE, nullptr); MQTTCLIENT_PERSISTENCE_NONE, nullptr);
if (rc != MQTTCLIENT_SUCCESS) { if (rc != MQTTCLIENT_SUCCESS) {
@@ -27,7 +25,6 @@ MqttClient::MqttClient(const std::string& broker, int port, const std::string& c
return; return;
} }
// 设置回调函数
MQTTClient_setCallbacks(client_, this, connectionLostCallback, MQTTClient_setCallbacks(client_, this, connectionLostCallback,
messageArrivedCallback, deliveryCompleteCallback); messageArrivedCallback, deliveryCompleteCallback);
} }
@@ -74,13 +71,11 @@ bool MqttClient::connect(const std::string& username, const std::string& passwor
return false; return false;
} }
// 重置连接选项
connOpts_ = MQTTClient_connectOptions_initializer; connOpts_ = MQTTClient_connectOptions_initializer;
connOpts_.keepAliveInterval = 20; connOpts_.keepAliveInterval = 20;
connOpts_.cleansession = 1; connOpts_.cleansession = 1;
connOpts_.reliable = 0; connOpts_.reliable = 0;
// 设置用户名和密码
if (!username_.empty()) { if (!username_.empty()) {
connOpts_.username = username_.c_str(); connOpts_.username = username_.c_str();
if (!password_.empty()) { if (!password_.empty()) {
@@ -192,12 +187,12 @@ bool MqttClient::publishJson(const std::string& topic, const nlohmann::json& jso
return publish(topic, json.dump(), qos, retain); return publish(topic, json.dump(), qos, retain);
} }
void MqttClient::setMessageCallback(MessageCallback callback) { void MqttClient::setMessageCb(MessageCb cb) {
messageCallback_ = callback; messageCb_ = cb;
} }
void MqttClient::setConnectionCallback(ConnectionCallback callback) { void MqttClient::setConnectionCb(ConnectionCb cb) {
connectionCallback_ = callback; connectionCb_ = cb;
} }
void MqttClient::startMessageProcessor() { void MqttClient::startMessageProcessor() {
@@ -237,9 +232,9 @@ void MqttClient::processMessageQueue() {
messageQueue_.pop(); messageQueue_.pop();
lock.unlock(); lock.unlock();
if (messageCallback_) { if (messageCb_) {
try { try {
messageCallback_(message.topic, message.payload); messageCb_(message.topic, message.payload);
} catch (const std::exception& e) { } catch (const std::exception& e) {
LOG_ERROR("Exception in message callback: " + std::string(e.what())); LOG_ERROR("Exception in message callback: " + std::string(e.what()));
} }
@@ -250,7 +245,6 @@ void MqttClient::processMessageQueue() {
} }
} }
// C 风格回调函数实现
int MqttClient::messageArrivedCallback(void* context, char* topicName, int topicLen, MQTTClient_message* message) { int MqttClient::messageArrivedCallback(void* context, char* topicName, int topicLen, MQTTClient_message* message) {
MqttClient* client = static_cast<MqttClient*>(context); MqttClient* client = static_cast<MqttClient*>(context);
@@ -270,7 +264,7 @@ int MqttClient::messageArrivedCallback(void* context, char* topicName, int topic
MQTTClient_freeMessage(&message); MQTTClient_freeMessage(&message);
MQTTClient_free(topicName); MQTTClient_free(topicName);
return 1; // 成功处理消息 return 1;
} }
void MqttClient::connectionLostCallback(void* context, char* cause) { void MqttClient::connectionLostCallback(void* context, char* cause) {
@@ -282,14 +276,14 @@ void MqttClient::connectionLostCallback(void* context, char* cause) {
} }
void MqttClient::deliveryCompleteCallback(void* context, MQTTClient_deliveryToken dt) { void MqttClient::deliveryCompleteCallback(void* context, MQTTClient_deliveryToken dt) {
// 消息发送完成回调,目前不需要特殊处理
} }
void MqttClient::handleConnectionLost() { void MqttClient::handleConnectionLost() {
connected_ = false; connected_ = false;
if (connectionCallback_) { if (connectionCb_) {
connectionCallback_(false); connectionCb_(false);
} }
if (shouldReconnect_ && !reconnecting_) { if (shouldReconnect_ && !reconnecting_) {
@@ -303,8 +297,8 @@ void MqttClient::handleConnectionEstablished() {
reconnecting_ = false; reconnecting_ = false;
LOG_INFO("MQTT connection established"); LOG_INFO("MQTT connection established");
if (connectionCallback_) { if (connectionCb_) {
connectionCallback_(true); connectionCb_(true);
} }
} }