libpromeki 1.0.0-alpha
PROfessional MEdia toolKIt
 
Loading...
Searching...
No Matches
dnsconfig.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 <cstdint>
14#include <promeki/namespace.h>
15#include <promeki/duration.h>
16#include <promeki/error.h>
17#include <promeki/list.h>
18#include <promeki/result.h>
20#include <promeki/string.h>
21#include <promeki/stringlist.h>
22
23PROMEKI_NAMESPACE_BEGIN
24
54class DnsConfig {
55 public:
57 static const char *DefaultFallbackServerCstr;
58
60 static constexpr int64_t DefaultTimeoutMs = 5000;
61
63 static constexpr int DefaultAttempts = 2;
64
66 static constexpr int DefaultNdots = 1;
67
69 static constexpr uint16_t DefaultPort = 53;
70
72 DnsConfig() = default;
73
91 static Result<DnsConfig> loadSystem();
92
105 static DnsConfig fromResolvConfText(const String &text);
106
108 bool isEmpty() const { return _nameservers.isEmpty(); }
109
111 const List<SocketAddress> &nameservers() const { return _nameservers; }
113 void setNameservers(const List<SocketAddress> &servers) { _nameservers = servers; }
114
116 const StringList &searchDomains() const { return _searchDomains; }
118 void setSearchDomains(const StringList &domains) { _searchDomains = domains; }
119
121 Duration timeout() const { return _timeout; }
123 void setTimeout(const Duration &t) { _timeout = t; }
124
126 int attempts() const { return _attempts; }
128 void setAttempts(int n) { _attempts = (n > 0) ? n : 1; }
129
131 int ndots() const { return _ndots; }
133 void setNdots(int n) { _ndots = (n >= 0) ? n : 0; }
134
135 private:
136 List<SocketAddress> _nameservers;
137 StringList _searchDomains;
138 Duration _timeout = Duration::fromMilliseconds(DefaultTimeoutMs);
139 int _attempts = DefaultAttempts;
140 int _ndots = DefaultNdots;
141};
142
143PROMEKI_NAMESPACE_END
144
145#endif // PROMEKI_ENABLE_NETWORK