根据 API,mosquitto_want_write() 函数在准备好要在套接字中使用的数据时返回 TRUE。
但是准备好数据意味着什么?准备的数据在哪里?什么函数调用可以准备数据?
数据是由调用 Mosquito_publish() 准备的吗?
不幸的是,我找不到与此相关的任何链接。如果您能告诉我是否有与此相关的任何数据或链接,我将不胜感激。
根据 API,mosquitto_want_write() 函数在准备好要在套接字中使用的数据时返回 TRUE。
但是准备好数据意味着什么?准备的数据在哪里?什么函数调用可以准备数据?
数据是由调用 Mosquito_publish() 准备的吗?
不幸的是,我找不到与此相关的任何链接。如果您能告诉我是否有与此相关的任何数据或链接,我将不胜感激。
只看的定义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__queue
是mosq->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);
因此,总结一下:mosquitto
struct 保存要发送的数据包的链接列表,并且操作将数据包添加到队列中。在某些情况下,这些数据包是直接发送的,我将由您自己弄清楚这些数据包是什么。