11#include <promeki/config.h>
12#if PROMEKI_ENABLE_NETWORK
19PROMEKI_NAMESPACE_BEGIN
61class NetworkInterfaceMonitor :
public ObjectBase {
62 PROMEKI_OBJECT(NetworkInterfaceMonitor, ObjectBase)
65 static constexpr unsigned int DefaultDebounceMs = 50;
68 explicit NetworkInterfaceMonitor(ObjectBase *parent =
nullptr);
71 ~NetworkInterfaceMonitor()
override;
99 bool isRunning()
const {
return _running; }
109 void setDebounceMs(
unsigned int ms) { _debounceMs = ms; }
112 unsigned int debounceMs()
const {
return _debounceMs; }
123 void testForceRescan();
133 static NetworkInterfaceMonitor *anyRunning();
136 PROMEKI_SIGNAL(interfaceAdded, NetworkInterface);
138 PROMEKI_SIGNAL(interfaceRemoved, NetworkInterface);
140 PROMEKI_SIGNAL(linkUp, NetworkInterface);
142 PROMEKI_SIGNAL(linkDown, NetworkInterface);
144 PROMEKI_SIGNAL(addressAddedIpv4, NetworkInterface, Ipv4Address);
146 PROMEKI_SIGNAL(addressRemovedIpv4, NetworkInterface, Ipv4Address);
148 PROMEKI_SIGNAL(addressAddedIpv6, NetworkInterface, Ipv6Address);
150 PROMEKI_SIGNAL(addressRemovedIpv6, NetworkInterface, Ipv6Address);
157 PROMEKI_SIGNAL(interfacesChanged);
176 bool _running =
false;
177 int _debounceTimer = -1;
178 unsigned int _debounceMs = DefaultDebounceMs;
180 struct PreviousEntry {
181 NetworkInterfaceImplPtr impl;
182 NetworkInterfaceData data;
209Error networkInterfaceMonitorPlatformOpen(NetworkInterfaceMonitor *m);
212void networkInterfaceMonitorPlatformClose(NetworkInterfaceMonitor *m);