NetworkDetector: make grace period a device setting instead of a param

master
Michael Zanetti 2019-06-06 02:56:51 +02:00
parent 85a415acab
commit e14bc40409
3 changed files with 17 additions and 3 deletions

View File

@ -29,6 +29,7 @@ DeviceMonitor::~DeviceMonitor()
void DeviceMonitor::setGracePeriod(int minutes)
{
log("Setting grace period to " + QString::number(minutes) + " minutes.");
m_gracePeriod = minutes;
}
@ -193,7 +194,7 @@ void DeviceMonitor::pingFinished(int exitCode)
emit seen();
m_lastSeenTime = QDateTime::currentDateTime();
} else {
log("ICMP Ping failed.");
log("ICMP Ping failed. Last seen: " + m_lastSeenTime.toString() + ", grace period: " + QString::number(m_gracePeriod) + " (until " + m_lastSeenTime.addSecs(60 * m_gracePeriod).toString() + ")");
if (m_reachable && m_lastSeenTime.addSecs(m_gracePeriod * 60) < QDateTime::currentDateTime()) {
log("Exceeded grace period of " + QString::number(m_gracePeriod) + " minutes. Marking device as offline.");
m_reachable = false;

View File

@ -84,8 +84,19 @@ DeviceManager::DeviceSetupStatus DevicePluginNetworkDetector::setupDevice(Device
connect(monitor, &DeviceMonitor::reachableChanged, this, &DevicePluginNetworkDetector::deviceReachableChanged);
connect(monitor, &DeviceMonitor::addressChanged, this, &DevicePluginNetworkDetector::deviceAddressChanged);
connect(monitor, &DeviceMonitor::seen, this, &DevicePluginNetworkDetector::deviceSeen);
monitor->setGracePeriod(device->setting(networkDeviceSettingsGracePeriodParamTypeId).toInt());
m_monitors.insert(monitor, device);
connect(device, &Device::settingChanged, this, [this, device](const ParamTypeId &paramTypeId, const QVariant &value){
if (paramTypeId != networkDeviceSettingsGracePeriodParamTypeId) {
return;
}
DeviceMonitor *monitor = m_monitors.key(device);
if (monitor) {
monitor->setGracePeriod(value.toInt());
}
});
if (!m_pluginTimer) {
m_pluginTimer = hardwareManager()->pluginTimerManager()->registerTimer(30);
connect(m_pluginTimer, &PluginTimer::timeout, m_broadcastPing, &BroadcastPing::run);

View File

@ -28,9 +28,11 @@
"displayName": "hardware address",
"type": "QString",
"inputType": "TextLine"
},
}
],
"settingsTypes": [
{
"id": "40116f86-e6b3-4a20-b1e9-e1bd4b6d5b70",
"id": "6c1ec0c8-6a02-4b3c-9064-ee33cfd61fbe",
"name": "gracePeriod",
"displayName": "Grace period (Minutes)",
"type": "uint",