libpromeki 1.0.0-alpha
PROfessional MEdia toolKIt
 
Loading...
Searching...
No Matches
networkinterfacebackend.h
Go to the documentation of this file.
1
8#pragma once
9
10
11#include <promeki/config.h>
12#if PROMEKI_ENABLE_NETWORK
13#include <promeki/namespace.h>
14#include <promeki/string.h>
15#include <promeki/stringlist.h>
16#include <promeki/list.h>
18
19PROMEKI_NAMESPACE_BEGIN
20
21class NetworkInterface;
22
39class NetworkInterfaceBackend {
40 public:
42 using ImplList = ::promeki::List<NetworkInterfaceImplPtr>;
43
52 static void registerBackend(NetworkInterfaceBackend *backend);
53
60 static void unregisterBackend(const String &name);
61
63 static StringList registeredBackends();
64
80 static ImplList enumerateAll();
81
90 static void invalidateEnumerationCache();
91
93 static unsigned int enumerationTtlMs();
94
101 static void setEnumerationTtlMs(unsigned int ms);
102
104 static constexpr unsigned int DefaultEnumerationTtlMs = 250;
105
106 virtual ~NetworkInterfaceBackend() = default;
107
109 virtual String name() const = 0;
110
120 virtual int priority() const { return 100; }
121
129 virtual ImplList enumerate() const = 0;
130};
131
132PROMEKI_NAMESPACE_END
133
134#endif // PROMEKI_ENABLE_NETWORK