11#include <promeki/config.h>
12#if PROMEKI_ENABLE_NETWORK
19PROMEKI_NAMESPACE_BEGIN
21class NetworkInterface;
39class NetworkInterfaceBackend {
42 using ImplList = ::promeki::List<NetworkInterfaceImplPtr>;
52 static void registerBackend(NetworkInterfaceBackend *backend);
60 static void unregisterBackend(
const String &name);
63 static StringList registeredBackends();
80 static ImplList enumerateAll();
90 static void invalidateEnumerationCache();
93 static unsigned int enumerationTtlMs();
101 static void setEnumerationTtlMs(
unsigned int ms);
104 static constexpr unsigned int DefaultEnumerationTtlMs = 250;
106 virtual ~NetworkInterfaceBackend() =
default;
109 virtual String name()
const = 0;
120 virtual int priority()
const {
return 100; }
129 virtual ImplList enumerate()
const = 0;