Commit 81c477905dded5e810e62b1c5afd56986f8c256e

Authored by Patric Stout
1 parent c163e9a4

fix(connection): check every 100ms, not every 100us, for an update

Doing it every 100us consumes a lot of CPU, and was not the
intention.

Additionally, increase the read interval to 100ms, as 10ms is using
quite a lot of CPU for not really a good reason other than reacting
quickly on error situations. That really is not the right balance
to strike.
src/Connection.cpp
@@ -283,9 +283,7 @@ bool TrueMQTT::Client::Impl::Connection::connectToAny() @@ -283,9 +283,7 @@ bool TrueMQTT::Client::Impl::Connection::connectToAny()
283 } 283 }
284 284
285 // Check for at most 100ms if there is any activity on the sockets. 285 // Check for at most 100ms if there is any activity on the sockets.
286 - timeval timeout;  
287 - timeout.tv_sec = 0;  
288 - timeout.tv_usec = 100; 286 + timeval timeout = {0, 100 * 1000};
289 287
290 fd_set write_fds; 288 fd_set write_fds;
291 FD_ZERO(&write_fds); 289 FD_ZERO(&write_fds);
src/Packet.cpp
@@ -16,7 +16,7 @@ @@ -16,7 +16,7 @@
16 16
17 ssize_t TrueMQTT::Client::Impl::Connection::recv(char *buffer, size_t length) const 17 ssize_t TrueMQTT::Client::Impl::Connection::recv(char *buffer, size_t length) const
18 { 18 {
19 - // We idle-check every 10ms if we are requested to stop or if there was 19 + // We idle-check every 100ms if we are requested to stop or if there was
20 // an error. This is to prevent the recv() call from blocking forever. 20 // an error. This is to prevent the recv() call from blocking forever.
21 while (true) 21 while (true)
22 { 22 {
@@ -24,7 +24,7 @@ ssize_t TrueMQTT::Client::Impl::Connection::recv(char *buffer, size_t length) co @@ -24,7 +24,7 @@ ssize_t TrueMQTT::Client::Impl::Connection::recv(char *buffer, size_t length) co
24 fd_set read_fds; 24 fd_set read_fds;
25 FD_ZERO(&read_fds); 25 FD_ZERO(&read_fds);
26 FD_SET(m_socket, &read_fds); 26 FD_SET(m_socket, &read_fds);
27 - timeval timeout = {0, 10}; 27 + timeval timeout = {0, 100 * 1000};
28 size_t ret = select(m_socket + 1, &read_fds, nullptr, nullptr, &timeout); 28 size_t ret = select(m_socket + 1, &read_fds, nullptr, nullptr, &timeout);
29 29
30 if (m_state == State::SOCKET_ERROR || m_state == State::STOP) 30 if (m_state == State::SOCKET_ERROR || m_state == State::STOP)