coreMQTT
v2.0.0
MQTT 3.1.1 客户端库
MQTT_ProcessLoop
循环以从传输接口接收数据包。处理保活操作。
MQTTStatus_t
MQTT_ProcessLoop
(
MQTTContext_t
* pContext );
MQTT_ProcessLoop
MQTTStatus_t MQTT_ProcessLoop(MQTTContext_t *pContext)
用于从传输接口接收数据包的循环。处理保活操作。
定义:
core_mqtt.c:3008
MQTTStatus_t
MQTTStatus_t
返回来自 MQTT 函数的代码。
定义:
core_mqtt_serializer.h:97
MQTTContext_t
代表 MQTT 连接的结构体。
定义:
core_mqtt.h:160
请注意,
如将虚拟定时器函数
MQTTGetCurrentTimeFunc_t
传递给库,则
MQTT_ProcessLoop
API 不支持保活机制。在这种情况下, 应使用
MQTT_ReceiveLoop
API 函数。
参数
[in]
pContext
已初始化且已连接的 MQTT 上下文。
请注意,
调用此函数会在一段时间内阻塞调用上下文,该时间段取决于配置宏,
MQTT_RECV_POLLING_TIMEOUT_MS
和
MQTT_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
@ MQTTSuccess
定义:
core_mqtt_serializer.h:98
由
1.9.2 生成