avoid polling if message is up-to-date within interval

This commit is contained in:
John
2022-02-12 11:25:15 +01:00
parent f7c0a63a90
commit 0aeb0a4aaf
+11 -8
View File
@@ -482,14 +482,17 @@ result_t BusHandler::handleSymbol() {
Message* message = m_messages->getNextPoll(); Message* message = m_messages->getNextPoll();
if (message != nullptr) { if (message != nullptr) {
m_lastPoll = now; m_lastPoll = now;
auto request = new PollRequest(message); if (difftime(now, message->getLastUpdateTime()) > m_pollInterval) {
result_t ret = request->prepare(m_ownMasterAddress); // only poll this message if it was not updated already by other means within the interval
if (ret != RESULT_OK) { auto request = new PollRequest(message);
logError(lf_bus, "prepare poll message: %s", getResultCode(ret)); result_t ret = request->prepare(m_ownMasterAddress);
delete request; if (ret != RESULT_OK) {
} else { logError(lf_bus, "prepare poll message: %s", getResultCode(ret));
startRequest = request; delete request;
m_nextRequests.push(request); } else {
startRequest = request;
m_nextRequests.push(request);
}
} }
} }
} }