0

根据 API,mosquitto_want_write() 函数在准备好要在套接字中使用的数据时返回 TRUE。

  1. 但是准备好数据意味着什么?准备的数据在哪里?什么函数调用可以准备数据?

  2. 数据是由调用 Mosquito_publish() 准备的吗?

不幸的是,我找不到与此相关的任何链接。如果您能告诉我是否有与此相关的任何数据或链接,我将不胜感激。

4

1 回答 1

0

只看的定义mosquitto_want_write

bool mosquitto_want_write(struct mosquitto *mosq) {
    bool result = false;
    if(mosq->out_packet || mosq->current_out_packet){
        result = true;
    }
    return result;
}

一个呼叫mosquitto_publish最终以send__publish,哪个呼叫send__real_publish,哪个呼叫结束packet__queue

并且packet__queuemosq->out_packet 填充的地方:

    pthread_mutex_lock(&mosq->out_packet_mutex);
    if(mosq->out_packet){
        mosq->out_packet_last->next = packet;
    }else{
        mosq->out_packet = packet;
    }
    mosq->out_packet_last = packet;
    pthread_mutex_unlock(&mosq->out_packet_mutex);

因此,总结一下:mosquittostruct 保存要发送的数据包的链接列表,并且操作将数据包添加到队列中。在某些情况下,这些数据包是直接发送的,我将由您自己弄清楚这些数据包是什么。

于 2021-10-14T18:11:28.220 回答