From a378aa66d14b1de86df65bc02b411e8858ec620a Mon Sep 17 00:00:00 2001 From: Oskari Timperi Date: Sat, 18 Feb 2017 15:39:42 +0200 Subject: Add timeout param to MqttClientRunOnce() Also change SocketSelect() to take timeout in milliseconds. --- src/client.c | 11 ++++++++--- src/mqtt.h | 2 +- src/socket.c | 4 ++-- 3 files changed, 11 insertions(+), 6 deletions(-) diff --git a/src/client.c b/src/client.c index 3aba76c..c9fa876 100644 --- a/src/client.c +++ b/src/client.c @@ -282,7 +282,7 @@ int MqttClientDisconnect(MqttClient *client) return MqttClientQueueSimplePacket(client, MqttPacketTypeDisconnect); } -int MqttClientRunOnce(MqttClient *client) +int MqttClientRunOnce(MqttClient *client, int timeout) { int rv; int events; @@ -312,7 +312,12 @@ int MqttClientRunOnce(MqttClient *client) LOG_DEBUG("selecting"); - rv = SocketSelect(client->stream.sock, &events, client->keepAlive); + if (timeout <= 0) + { + timeout = client->keepAlive * 1000; + } + + rv = SocketSelect(client->stream.sock, &events, timeout); if (rv == -1) { @@ -390,7 +395,7 @@ int MqttClientRun(MqttClient *client) while (!client->stopped) { - if (MqttClientRunOnce(client) == -1) + if (MqttClientRunOnce(client, -1) == -1) return -1; } diff --git a/src/mqtt.h b/src/mqtt.h index d7b62c9..4ea0930 100644 --- a/src/mqtt.h +++ b/src/mqtt.h @@ -73,7 +73,7 @@ int MqttClientConnect(MqttClient *client, const char *host, short port, int MqttClientDisconnect(MqttClient *client); -int MqttClientRunOnce(MqttClient *client); +int MqttClientRunOnce(MqttClient *client, int timeout); int MqttClientRun(MqttClient *client); diff --git a/src/socket.c b/src/socket.c index e161f53..64a7c01 100644 --- a/src/socket.c +++ b/src/socket.c @@ -154,8 +154,8 @@ int SocketSelect(int sock, int *events, int timeout) } memset(&tv, 0, sizeof(tv)); - tv.tv_sec = timeout; - tv.tv_usec = 0; + tv.tv_sec = timeout / 1000; + tv.tv_usec = (timeout - (tv.tv_sec * 1000)) * 1000; *events = 0; -- cgit v1.2.3