SNode.C
Loading...
Searching...
No Matches
ConfigAddress.cpp
Go to the documentation of this file.
1/*
2 * SNode.C - a slim toolkit for network communication
3 * Copyright (C) Volker Christian <me@vchrist.at>
4 * 2020, 2021, 2022, 2023, 2024, 2025
5 *
6 * This program is free software: you can redistribute it and/or modify
7 * it under the terms of the GNU Lesser General Public License as published
8 * by the Free Software Foundation, either version 3 of the License, or
9 * (at your option) any later version.
10 *
11 * This program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU Lesser General Public License for more details.
15 *
16 * You should have received a copy of the GNU Lesser General Public License
17 * along with this program. If not, see <http://www.gnu.org/licenses/>.
18 */
19
20#include "net/in/config/ConfigAddress.h"
21
22#include "net/config/ConfigAddressBase.hpp" // IWYU pragma: keep
23#include "net/config/ConfigAddressLocal.hpp" // IWYU pragma: keep
24#include "net/config/ConfigAddressRemote.hpp" // IWYU pragma: keep
25#include "net/config/ConfigAddressReverse.hpp" // IWYU pragma: keep
26#include "net/config/ConfigSection.hpp"
27
28#ifndef DOXYGEN_SHOULD_SKIP_THIS
29
30#include "core/system/netdb.h"
31#include "utils/PreserveErrno.h"
32
33#include <limits>
34
35#endif /* DOXYGEN_SHOULD_SKIP_THIS */
36
37#define XSTR(s) STR(s)
38#define STR(s) #s
39
40namespace net::in::config {
41
42 template <template <typename SocketAddress> typename ConfigAddressType>
48 "--numeric-reverse{true}",
49 "Suppress reverse host name lookup",
50 "bool",
52 CLI::IsMember({"true", "false"}));
53 }
54
55 template <template <typename SocketAddress> typename ConfigAddressType>
58 ->default_str(numeric ? "true" : "false")
59 ->clear();
60
61 return *this;
62 }
63
64 template <template <typename SocketAddress> typename ConfigAddressType>
68
69 template <template <typename SocketAddress> typename ConfigAddressType>
73 try {
76 try {
79 throw;
80 }
81 }
83 return socketAddress;
84 }
86 template <template <typename SocketAddress> typename ConfigAddressType>
92 "--host",
93 "Host name or IPv4 address",
94 "hostname|IPv4",
95 "0.0.0.0",
99 "--port",
100 "Port number",
101 "port",
102 0,
106 "--numeric{true}",
107 "Suppress host name lookup",
108 "bool",
110 CLI::IsMember({"true", "false"}));
111
113 "--numeric-reverse{true}",
114 "Suppress reverse host name lookup",
115 "bool",
117 CLI::IsMember({"true", "false"}));
118 }
119
120 template <template <typename SocketAddress> typename ConfigAddressType>
123
124 try {
129 delete socketAddress;
130 socketAddress = nullptr;
131
132 throw;
133 }
134
135 return socketAddress;
136 }
137
138 template <template <typename SocketAddress> typename ConfigAddressType>
154
155 template <template <typename SocketAddress> typename ConfigAddressType>
162
163 template <template <typename SocketAddress> typename ConfigAddressType>
174
175 template <template <typename SocketAddress> typename ConfigAddressType>
177 return hostOpt->as<std::string>();
178 }
179
180 template <template <typename SocketAddress> typename ConfigAddressType>
191
192 template <template <typename SocketAddress> typename ConfigAddressType>
196
197 template <template <typename SocketAddress> typename ConfigAddressType>
200
201 numericOpt //
202 ->default_str(numeric ? "true" : "false")
203 ->clear();
204
205 return *this;
206 }
207
208 template <template <typename SocketAddress> typename ConfigAddressType>
210 return numericOpt->as<bool>();
211 }
212
213 template <template <typename SocketAddress> typename ConfigAddressType>
216 ->default_str(numeric ? "true" : "false")
217 ->clear();
218
219 return *this;
220 }
221
222 template <template <typename SocketAddress> typename ConfigAddressType>
224 return numericReverseOpt->as<bool>();
225 }
226
227 template <template <typename SocketAddress> typename ConfigAddressType>
233
234 template <template <typename SocketAddress> typename ConfigAddressType>
236 return aiFlags;
237 }
238
239 template <template <typename SocketAddress> typename ConfigAddressType>
245
246 template <template <typename SocketAddress> typename ConfigAddressType>
248 return aiSockType;
249 }
250
251 template <template <typename SocketAddress> typename ConfigAddressType>
257
258 template <template <typename SocketAddress> typename ConfigAddressType>
260 return aiProtocol;
261 }
262
263 template <template <typename SocketAddress> typename ConfigAddressType>
269
270 template <template <typename SocketAddress> typename ConfigAddressType>
276
277} // namespace net::in::config
278
279template class net::config::ConfigAddress<net::in::SocketAddress>;
280template class net::config::ConfigAddressLocal<net::in::SocketAddress>;
281template class net::config::ConfigAddressRemote<net::in::SocketAddress>;
282template class net::config::ConfigAddressReverse<net::in::SocketAddress>;
283template class net::config::ConfigAddressBase<net::in::SocketAddress>;
284template class net::in::config::ConfigAddress<net::config::ConfigAddressLocal>;
285template class net::in::config::ConfigAddress<net::config::ConfigAddressRemote>;
286template class net::in::config::ConfigAddressReverse<net::config::ConfigAddressReverse>;
#define XSTR(s)
#define STR(a)
Definition clients.h:26