Преглед изворни кода

refactor: disconnect接口添加send失败逻辑

RyanCW пре 1 година
родитељ
комит
ee66291cc0
1 измењених фајлова са 9 додато и 2 уклоњено
  1. 9 2
      mqttclient/RyanMqttClient.c

+ 9 - 2
mqttclient/RyanMqttClient.c

@@ -141,6 +141,7 @@ RyanMqttError_e RyanMqttStart(RyanMqttClient_t *client)
 RyanMqttError_e RyanMqttDisconnect(RyanMqttClient_t *client, RyanMqttBool_e sendDiscFlag)
 {
     RyanMqttConnectStatus_e connectState = RyanMqttConnectUserDisconnected;
+    RyanMqttError_e result = RyanMqttFailedError;
     int32_t packetLen = 0;
 
     RyanMqttCheck(NULL != client, RyanMqttParamInvalidError, rlog_d);
@@ -151,8 +152,14 @@ RyanMqttError_e RyanMqttDisconnect(RyanMqttClient_t *client, RyanMqttBool_e send
         platformMutexLock(client->config.userData, &client->sendBufLock); // 获取互斥锁
         // 序列化断开连接数据包并发送
         packetLen = MQTTSerialize_disconnect((uint8_t *)client->config.sendBuffer, client->config.sendBufferSize);
-        if (packetLen > 0)
-            RyanMqttSendPacket(client, client->config.sendBuffer, packetLen);
+        RyanMqttCheckCode(packetLen > 0, RyanMqttSerializePacketError, rlog_d, {
+            platformMutexUnLock(client->config.userData, &client->sendBufLock);
+        });
+
+        result = RyanMqttSendPacket(client, client->config.sendBuffer, packetLen);
+        RyanMqttCheckCode(RyanMqttSuccessError == result, result, rlog_d, {
+            platformMutexUnLock(client->config.userData, &client->sendBufLock);
+        });
         platformMutexUnLock(client->config.userData, &client->sendBufLock); // 释放互斥锁
     }