net: mqtt: Add keep alive timeout helper
Add function that returns remaining time until next keep alive message shall be sent. Such function could be used for instance as a source for `poll` timeout. Signed-off-by: Robert Lubos <robert.lubos@nordicsemi.no>
This commit is contained in:
parent
e34f1cee06
commit
20b1c695ab
2 changed files with 30 additions and 0 deletions
|
@ -707,6 +707,18 @@ int mqtt_abort(struct mqtt_client *client);
|
||||||
*/
|
*/
|
||||||
int mqtt_live(struct mqtt_client *client);
|
int mqtt_live(struct mqtt_client *client);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Helper function to determine when next keep alive message should be
|
||||||
|
* sent. Can be used for instance as a source for `poll` timeout.
|
||||||
|
*
|
||||||
|
* @param[in] client Client instance for which the procedure is requested.
|
||||||
|
*
|
||||||
|
* @return Time in milliseconds until next keep alive message is expected to
|
||||||
|
* be sent. Function will return UINT32_MAX if keep alive messages are
|
||||||
|
* not enabled.
|
||||||
|
*/
|
||||||
|
u32_t mqtt_keepalive_time_left(const struct mqtt_client *client);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Receive an incoming MQTT packet. The registered callback will be
|
* @brief Receive an incoming MQTT packet. The registered callback will be
|
||||||
* called with the packet content.
|
* called with the packet content.
|
||||||
|
|
|
@ -597,6 +597,24 @@ int mqtt_live(struct mqtt_client *client)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
u32_t mqtt_keepalive_time_left(const struct mqtt_client *client)
|
||||||
|
{
|
||||||
|
u32_t elapsed_time = mqtt_elapsed_time_in_ms_get(
|
||||||
|
client->internal.last_activity);
|
||||||
|
u32_t keepalive_ms = 1000U * client->keepalive;
|
||||||
|
|
||||||
|
if (client->keepalive == 0) {
|
||||||
|
/* Keep alive not enabled. */
|
||||||
|
return UINT32_MAX;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (keepalive_ms <= elapsed_time) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
return keepalive_ms - elapsed_time;
|
||||||
|
}
|
||||||
|
|
||||||
int mqtt_input(struct mqtt_client *client)
|
int mqtt_input(struct mqtt_client *client)
|
||||||
{
|
{
|
||||||
int err_code = 0;
|
int err_code = 0;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue