mosquitto_want_write()函数中准备数据是什么意思?

What does it mean that data is prepared in the function of mosquitto_want_write()?

根据 API,mosquitto_want_write() 函数 returns 准备好要在套接字中使用的数据时为真。

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

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

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

只看 mosquitto_want_writedefinition:

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 is filled:

    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);

因此,总结一下:mosquitto struct 包含要发送的数据包的链接列表,并且操作将数据包添加到队列中。在某些情况下,这些数据包是直接发送的,我会留给你弄清楚这些是什么。