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();
if (message != nullptr) {
m_lastPoll = now;
auto request = new PollRequest(message);
result_t ret = request->prepare(m_ownMasterAddress);
if (ret != RESULT_OK) {
logError(lf_bus, "prepare poll message: %s", getResultCode(ret));
delete request;
} else {
startRequest = request;
m_nextRequests.push(request);
if (difftime(now, message->getLastUpdateTime()) > m_pollInterval) {
// only poll this message if it was not updated already by other means within the interval
auto request = new PollRequest(message);
result_t ret = request->prepare(m_ownMasterAddress);
if (ret != RESULT_OK) {
logError(lf_bus, "prepare poll message: %s", getResultCode(ret));
delete request;
} else {
startRequest = request;
m_nextRequests.push(request);
}
}
}
}