coreMQTT v2.0.0
MQTT 3.1.1 客户端库
MQTT_ProcessLoop

循环以从传输接口接收数据包。处理保活操作。

MQTTStatus_t MQTT_ProcessLoop(MQTTContext_t *pContext)
用于从传输接口接收数据包的循环。处理保活操作。
定义:core_mqtt.c:3008
MQTTStatus_t
返回来自 MQTT 函数的代码。
定义:core_mqtt_serializer.h:97
代表 MQTT 连接的结构体。
定义:core_mqtt.h:160
请注意,
如将虚拟定时器函数 MQTTGetCurrentTimeFunc_t 传递给库,则 MQTT_ProcessLoop API 不支持保活机制。在这种情况下, 应使用 MQTT_ReceiveLoop API 函数。
参数
[in]pContext已初始化且已连接的 MQTT 上下文。
请注意,
调用此函数会在一段时间内阻塞调用上下文,该时间段取决于配置宏,MQTT_RECV_POLLING_TIMEOUT_MSMQTT_SEND_RETRY_TIMEOUT_MS 以及底层传输接口实现超时,除非发送错误。阻塞时间还取决于 MQTTEventCallback_t 回调的执行时间。建议提供的 MQTTEventCallback_t 回调不包含阻塞操作,以防止出现 MQTT_ProcessLoop API 调用的潜在非确定性阻塞周期。
返回
如上下文为 NULL,则返回 MQTTBadParameter;如接收过程中发生网络错误,则返回 MQTTRecvFailed;如在发送 ACK 或 PINGREQ 时发生网络错误,则返回 MQTTSendFailed;如接收到无效数据包,则返回 MQTTBadResponse;返回 MQTTKeepAliveTimeout,如服务器在MQTT_PINGRESP_TIMEOUT_MS 规定的超时值(单位:毫秒)之前未发送过 PINGRESP。如传入的 QoS 1/2 发布或确认导致内部状态机的无效转换,则返回 MQTTIllegalState;如成功,则返回 MQTTSuccess

示例

// Variables used in this example.
MQTTStatus_t status;
// This context is assumed to be initialized and connected.
MQTTContext_t * pContext;
while( true )
{
status = MQTT_ProcessLoop( pContext );
if( status != MQTTSuccess )
{
// Determine the error. It's possible we might need to disconnect
// the underlying transport connection.
}
else
{
// Other application functions.
}
}
@ MQTTSuccess
定义:core_mqtt_serializer.h:98