NetworkDetector: make grace period a device setting instead of a param
This commit is contained in:
parent
85a415acab
commit
e14bc40409
@ -29,6 +29,7 @@ DeviceMonitor::~DeviceMonitor()
|
|||||||
|
|
||||||
void DeviceMonitor::setGracePeriod(int minutes)
|
void DeviceMonitor::setGracePeriod(int minutes)
|
||||||
{
|
{
|
||||||
|
log("Setting grace period to " + QString::number(minutes) + " minutes.");
|
||||||
m_gracePeriod = minutes;
|
m_gracePeriod = minutes;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -193,7 +194,7 @@ void DeviceMonitor::pingFinished(int exitCode)
|
|||||||
emit seen();
|
emit seen();
|
||||||
m_lastSeenTime = QDateTime::currentDateTime();
|
m_lastSeenTime = QDateTime::currentDateTime();
|
||||||
} else {
|
} 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()) {
|
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.");
|
log("Exceeded grace period of " + QString::number(m_gracePeriod) + " minutes. Marking device as offline.");
|
||||||
m_reachable = false;
|
m_reachable = false;
|
||||||
|
|||||||
@ -84,8 +84,19 @@ DeviceManager::DeviceSetupStatus DevicePluginNetworkDetector::setupDevice(Device
|
|||||||
connect(monitor, &DeviceMonitor::reachableChanged, this, &DevicePluginNetworkDetector::deviceReachableChanged);
|
connect(monitor, &DeviceMonitor::reachableChanged, this, &DevicePluginNetworkDetector::deviceReachableChanged);
|
||||||
connect(monitor, &DeviceMonitor::addressChanged, this, &DevicePluginNetworkDetector::deviceAddressChanged);
|
connect(monitor, &DeviceMonitor::addressChanged, this, &DevicePluginNetworkDetector::deviceAddressChanged);
|
||||||
connect(monitor, &DeviceMonitor::seen, this, &DevicePluginNetworkDetector::deviceSeen);
|
connect(monitor, &DeviceMonitor::seen, this, &DevicePluginNetworkDetector::deviceSeen);
|
||||||
|
monitor->setGracePeriod(device->setting(networkDeviceSettingsGracePeriodParamTypeId).toInt());
|
||||||
m_monitors.insert(monitor, device);
|
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) {
|
if (!m_pluginTimer) {
|
||||||
m_pluginTimer = hardwareManager()->pluginTimerManager()->registerTimer(30);
|
m_pluginTimer = hardwareManager()->pluginTimerManager()->registerTimer(30);
|
||||||
connect(m_pluginTimer, &PluginTimer::timeout, m_broadcastPing, &BroadcastPing::run);
|
connect(m_pluginTimer, &PluginTimer::timeout, m_broadcastPing, &BroadcastPing::run);
|
||||||
|
|||||||
@ -28,9 +28,11 @@
|
|||||||
"displayName": "hardware address",
|
"displayName": "hardware address",
|
||||||
"type": "QString",
|
"type": "QString",
|
||||||
"inputType": "TextLine"
|
"inputType": "TextLine"
|
||||||
},
|
}
|
||||||
|
],
|
||||||
|
"settingsTypes": [
|
||||||
{
|
{
|
||||||
"id": "40116f86-e6b3-4a20-b1e9-e1bd4b6d5b70",
|
"id": "6c1ec0c8-6a02-4b3c-9064-ee33cfd61fbe",
|
||||||
"name": "gracePeriod",
|
"name": "gracePeriod",
|
||||||
"displayName": "Grace period (Minutes)",
|
"displayName": "Grace period (Minutes)",
|
||||||
"type": "uint",
|
"type": "uint",
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user