NetworkDetector: make grace period a device setting instead of a param
parent
85a415acab
commit
e14bc40409
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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 ¶mTypeId, 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);
|
||||
|
|
|
|||
|
|
@ -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",
|
||||
|
|
|
|||
Loading…
Reference in New Issue