|
|
@ -106,8 +106,18 @@ void mosquitto_message_free(struct mosquitto_message **message)
|
|
|
|
_mosquitto_free(msg);
|
|
|
|
_mosquitto_free(msg);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void _mosquitto_message_queue(struct mosquitto *mosq, struct mosquitto_message_all *message, enum mosquitto_msg_direction dir)
|
|
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
|
|
|
* Function: _mosquitto_message_queue
|
|
|
|
|
|
|
|
*
|
|
|
|
|
|
|
|
* Returns:
|
|
|
|
|
|
|
|
* 0 - to indicate an outgoing message can be started
|
|
|
|
|
|
|
|
* 1 - to indicate that the outgoing message queue is full (inflight limit has been reached)
|
|
|
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
int _mosquitto_message_queue(struct mosquitto *mosq, struct mosquitto_message_all *message, enum mosquitto_msg_direction dir)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
|
|
|
|
int rc = 0;
|
|
|
|
|
|
|
|
|
|
|
|
/* mosq->*_message_mutex should be locked before entering this function */
|
|
|
|
/* mosq->*_message_mutex should be locked before entering this function */
|
|
|
|
assert(mosq);
|
|
|
|
assert(mosq);
|
|
|
|
assert(message);
|
|
|
|
assert(message);
|
|
|
@ -121,8 +131,12 @@ void _mosquitto_message_queue(struct mosquitto *mosq, struct mosquitto_message_a
|
|
|
|
mosq->out_messages = message;
|
|
|
|
mosq->out_messages = message;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
mosq->out_messages_last = message;
|
|
|
|
mosq->out_messages_last = message;
|
|
|
|
if(message->msg.qos > 0 && (mosq->max_inflight_messages == 0 || mosq->inflight_messages < mosq->max_inflight_messages)){
|
|
|
|
if(message->msg.qos > 0){
|
|
|
|
|
|
|
|
if(mosq->max_inflight_messages == 0 || mosq->inflight_messages < mosq->max_inflight_messages){
|
|
|
|
mosq->inflight_messages++;
|
|
|
|
mosq->inflight_messages++;
|
|
|
|
|
|
|
|
}else{
|
|
|
|
|
|
|
|
rc = 1;
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}else{
|
|
|
|
}else{
|
|
|
|
mosq->in_queue_len++;
|
|
|
|
mosq->in_queue_len++;
|
|
|
@ -134,6 +148,7 @@ void _mosquitto_message_queue(struct mosquitto *mosq, struct mosquitto_message_a
|
|
|
|
}
|
|
|
|
}
|
|
|
|
mosq->in_messages_last = message;
|
|
|
|
mosq->in_messages_last = message;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
return rc;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void _mosquitto_messages_reconnect_reset(struct mosquitto *mosq)
|
|
|
|
void _mosquitto_messages_reconnect_reset(struct mosquitto *mosq)
|
|
|
|