mosquitto_want_write()函数中准备数据是什么意思?
What does it mean that data is prepared in the function of mosquitto_want_write()?
根据 API,mosquitto_want_write() 函数 returns 准备好要在套接字中使用的数据时为真。
但是准备好数据意味着什么?在哪里准备数据?什么函数调用可以准备数据?
是调用Mosquito_publish()准备的数据吗?
很遗憾,我找不到任何与此相关的 link。如果您能告诉我是否有任何数据或与此相关的 link,我将不胜感激。
只看 mosquitto_want_write
的 definition:
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
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 包含要发送的数据包的链接列表,并且操作将数据包添加到队列中。在某些情况下,这些数据包是直接发送的,我会留给你弄清楚这些是什么。
根据 API,mosquitto_want_write() 函数 returns 准备好要在套接字中使用的数据时为真。
但是准备好数据意味着什么?在哪里准备数据?什么函数调用可以准备数据?
是调用Mosquito_publish()准备的数据吗?
很遗憾,我找不到任何与此相关的 link。如果您能告诉我是否有任何数据或与此相关的 link,我将不胜感激。
只看 mosquitto_want_write
的 definition:
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
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 包含要发送的数据包的链接列表,并且操作将数据包添加到队列中。在某些情况下,这些数据包是直接发送的,我会留给你弄清楚这些是什么。