Add getPollRate helper function
This open-coded pattern had been duplicated in a few places; deduplicate
and increase readability by adding a dedicated function. While we're at
it, also ensure the configured value isn't inf or NaN.
Signed-off-by: Zev Weiss <zev@bewilderbeest.net>
Change-Id: I5f8fe788eb342ca3bf8b52bd6a2e7cc3364f45e1
diff --git a/src/ADCSensorMain.cpp b/src/ADCSensorMain.cpp
index 05d586f..d174f64 100644
--- a/src/ADCSensorMain.cpp
+++ b/src/ADCSensorMain.cpp
@@ -238,18 +238,8 @@
}
}
- auto findPollRate = baseConfiguration->second.find("PollRate");
- float pollRate = pollRateDefault;
- if (findPollRate != baseConfiguration->second.end())
- {
- pollRate =
- std::visit(VariantToFloatVisitor(), findPollRate->second);
- if (pollRate <= 0.0F)
- {
- pollRate = pollRateDefault; // polling time too short
- }
- }
-
+ float pollRate =
+ getPollRate(baseConfiguration->second, pollRateDefault);
PowerState readState = getPowerState(baseConfiguration->second);
auto& sensor = sensors[sensorName];
diff --git a/src/HwmonTempMain.cpp b/src/HwmonTempMain.cpp
index 9ebdfcd..f203127 100644
--- a/src/HwmonTempMain.cpp
+++ b/src/HwmonTempMain.cpp
@@ -385,18 +385,7 @@
<< " index " << index << "\n";
}
- auto findPollRate = baseConfigMap.find("PollRate");
- float pollRate = pollRateDefault;
- if (findPollRate != baseConfigMap.end())
- {
- pollRate =
- std::visit(VariantToFloatVisitor(), findPollRate->second);
- if (pollRate <= 0.0F)
- {
- pollRate = pollRateDefault; // polling time too short
- }
- }
-
+ float pollRate = getPollRate(baseConfigMap, pollRateDefault);
PowerState readState = getPowerState(baseConfigMap);
auto permitSet = getPermitSet(baseConfigMap);
diff --git a/src/IpmbSensor.cpp b/src/IpmbSensor.cpp
index 96ca768..f594ed5 100644
--- a/src/IpmbSensor.cpp
+++ b/src/IpmbSensor.cpp
@@ -523,17 +523,7 @@
findSmType->second);
}
- float pollRate = pollRateDefault;
- auto findPollRate = cfg.find("PollRate");
- if (findPollRate != cfg.end())
- {
- pollRate = std::visit(VariantToFloatVisitor(),
- findPollRate->second);
- if (pollRate <= 0.0F)
- {
- pollRate = pollRateDefault;
- }
- }
+ float pollRate = getPollRate(cfg, pollRateDefault);
/* Default sensor type is "temperature" */
std::string sensorTypeName = "temperature";
diff --git a/src/PSUSensorMain.cpp b/src/PSUSensorMain.cpp
index 918b9c6..ab4f6f3 100644
--- a/src/PSUSensorMain.cpp
+++ b/src/PSUSensorMain.cpp
@@ -489,19 +489,7 @@
}
}
- /* The poll rate for the sensors */
- double pollRate = 0.0;
- auto pollRateObj = baseConfig->find("PollRate");
-
- if (pollRateObj != baseConfig->end())
- {
- pollRate =
- std::visit(VariantToDoubleVisitor(), pollRateObj->second);
- if (pollRate <= 0.0)
- {
- pollRate = PSUSensor::defaultSensorPoll;
- }
- }
+ float pollRate = getPollRate(*baseConfig, PSUSensor::defaultSensorPoll);
/* Find array of labels to be exposed if it is defined in config */
std::vector<std::string> findLabels;