int mosquitto_loop_forever( struct mosquitto * mosq, int timeout, int max_packets )
时间: 2023-12-12 18:03:49 浏览: 125
mosquitto 源码
函数作用:循环处理mosquitto客户端收发消息,直到遇到错误或者调用mosquitto_disconnect()断开连接。
函数参数:
- mosq:mosquitto客户端实例指针。
- timeout:超时时间(单位毫秒),用于控制每次循环阻塞的最长时间。
- max_packets:允许处理的最大MQTT包数量,避免一次循环处理太多消息导致程序阻塞。
函数返回值:
- MOSQ_ERR_SUCCESS:成功。
- MOSQ_ERR_INVAL:无效的参数。
- MOSQ_ERR_NO_CONN:没有连接。
- MOSQ_ERR_CONN_LOST:连接已经丢失。
- MOSQ_ERR_PROTOCOL:MQTT协议错误。
- MOSQ_ERR_ERRNO:系统错误码。
- MOSQ_ERR_TLS:TLS错误。
- MOSQ_ERR_PAYLOAD_SIZE:MQTT消息负载过大。
- MOSQ_ERR_MAX_PACKETS:超过最大允许处理的MQTT包数量。
- MOSQ_ERR_NOT_SUPPORTED:不支持的操作。
函数说明:该函数会在一个循环中阻塞,直到发生错误或者调用mosquitto_disconnect()函数主动断开连接才会返回。在阻塞期间,会不断接收和处理来自MQTT Broker的消息,并且调用mosquitto_message_callback()回调函数处理接收到的消息。函数会根据timeout参数控制每次循环阻塞的最长时间,如果timeout为0,则函数会一直阻塞直到有消息到来或者出现错误。max_packets参数用于限制每次循环处理的最大MQTT包数量,避免一次循环处理太多消息导致程序阻塞。
阅读全文