SNode.C
Loading...
Searching...
No Matches
net::in6::config::ConfigAddress< ConfigAddressTypeT > Class Template Reference

#include <ConfigAddress.h>

Inheritance diagram for net::in6::config::ConfigAddress< ConfigAddressTypeT >:
Collaboration diagram for net::in6::config::ConfigAddress< ConfigAddressTypeT >:

Public Member Functions

SocketAddress getSocketAddress (const SocketAddress::SockAddr &sockAddr, SocketAddress::SockLen sockAddrLen)
ConfigAddresssetSocketAddress (const SocketAddress &socketAddress)
ConfigAddresssetHost (const std::string &ipOrHostname)
std::string getHost () const
ConfigAddresssetPort (uint16_t port)
uint16_t getPort () const
ConfigAddresssetNumeric (bool numeric=true)
bool getNumeric () const
ConfigAddresssetNumericReverse (bool numeric=true)
bool getNumericReverse () const

Protected Member Functions

 ConfigAddress (net::config::ConfigInstance *instance, const std::string &addressOptionName, const std::string &addressOptionDescription)
ConfigAddresssetIpv4Mapped (bool ipv4Mapped=true)
bool getIpv4Mapped () const
ConfigAddresssetAiFlags (int aiFlags)
int getAiFlags () const
ConfigAddresssetAiSockType (int aiSocktype)
int getAiSockType () const
ConfigAddresssetAiProtocol (int aiProtocol)
int getAiProtocol () const
ConfigAddresssetHostRequired (bool required=true)
ConfigAddresssetPortRequired (bool required=true)

Private Types

using Super = ConfigAddressTypeT<SocketAddress>

Private Member Functions

SocketAddressinit () final

Private Attributes

CLI::Option * hostOpt = nullptr
CLI::Option * portOpt = nullptr
CLI::Option * numericOpt = nullptr
CLI::Option * numericReverseOpt = nullptr
CLI::Option * ipv4MappedOpt = nullptr
int aiFlags = 0
int aiSockType = 0
int aiProtocol = 0

Detailed Description

template<template< typename SocketAddressT > typename ConfigAddressTypeT>
class net::in6::config::ConfigAddress< ConfigAddressTypeT >

Definition at line 90 of file ConfigAddress.h.

Member Typedef Documentation

◆ Super

template<template< typename SocketAddressT > typename ConfigAddressTypeT>
using net::in6::config::ConfigAddress< ConfigAddressTypeT >::Super = ConfigAddressTypeT<SocketAddress>
private

Definition at line 92 of file ConfigAddress.h.

Constructor & Destructor Documentation

◆ ConfigAddress()

template<template< typename SocketAddress > typename ConfigAddressType>
net::in6::config::ConfigAddress< ConfigAddressType >::ConfigAddress ( net::config::ConfigInstance * instance,
const std::string & addressOptionName,
const std::string & addressOptionDescription )
explicitprotected

Definition at line 109 of file ConfigAddress.cpp.

114 "--host",
115 "Host name or IPv6 address",
116 "hostname|IPv6",
117 "::",
120 "--port",
121 "Port number",
122 "port",
123 0,
126 "--numeric",
127 "Suppress host name lookup",
128 "bool",
130 CLI::IsMember({"true", "false"}));
132 "--numeric-reverse",
133 "Suppress reverse host name lookup",
134 "bool",
136 CLI::IsMember({"true", "false"}));
138 "--ipv4-mapped",
139 "Resolve IPv4-mapped IPv6 addresses also",
140 "bool",
142 CLI::IsMember({"true", "false"}));
143 }
#define XSTR(s)
ConfigAddressTypeT< SocketAddress > Super

Member Function Documentation

◆ getAiFlags()

template<template< typename SocketAddress > typename ConfigAddressType>
int net::in6::config::ConfigAddress< ConfigAddressType >::getAiFlags ( ) const
protected

Definition at line 271 of file ConfigAddress.cpp.

271 {
272 return aiFlags;
273 }

References aiFlags.

◆ getAiProtocol()

template<template< typename SocketAddress > typename ConfigAddressType>
int net::in6::config::ConfigAddress< ConfigAddressType >::getAiProtocol ( ) const
protected

Definition at line 295 of file ConfigAddress.cpp.

295 {
296 return aiProtocol;
297 }

References aiProtocol.

◆ getAiSockType()

template<template< typename SocketAddress > typename ConfigAddressType>
int net::in6::config::ConfigAddress< ConfigAddressType >::getAiSockType ( ) const
protected

Definition at line 283 of file ConfigAddress.cpp.

283 {
284 return aiSockType;
285 }

References aiSockType.

◆ getHost()

template<template< typename SocketAddress > typename ConfigAddressType>
std::string net::in6::config::ConfigAddress< ConfigAddressType >::getHost ( ) const

Definition at line 201 of file ConfigAddress.cpp.

201 {
202 return hostOpt->as<std::string>();
203 }

References hostOpt.

◆ getIpv4Mapped()

template<template< typename SocketAddress > typename ConfigAddressType>
bool net::in6::config::ConfigAddress< ConfigAddressType >::getIpv4Mapped ( ) const
protected

Definition at line 259 of file ConfigAddress.cpp.

259 {
260 return ipv4MappedOpt->as<bool>();
261 }

References ipv4MappedOpt.

◆ getNumeric()

template<template< typename SocketAddress > typename ConfigAddressType>
bool net::in6::config::ConfigAddress< ConfigAddressType >::getNumeric ( ) const

Definition at line 234 of file ConfigAddress.cpp.

234 {
235 return numericOpt->as<bool>();
236 }

References numericOpt.

◆ getNumericReverse()

template<template< typename SocketAddressT > typename ConfigAddressTypeT>
bool net::in6::config::ConfigAddress< ConfigAddressTypeT >::getNumericReverse ( ) const

◆ getPort()

template<template< typename SocketAddress > typename ConfigAddressType>
uint16_t net::in6::config::ConfigAddress< ConfigAddressType >::getPort ( ) const

Definition at line 218 of file ConfigAddress.cpp.

218 {
219 return portOpt->as<uint16_t>();
220 }

References portOpt.

◆ getSocketAddress()

template<template< typename SocketAddress > typename ConfigAddressType>
SocketAddress net::in6::config::ConfigAddress< ConfigAddressType >::getSocketAddress ( const SocketAddress::SockAddr & sockAddr,
SocketAddress::SockLen sockAddrLen )

Definition at line 164 of file ConfigAddress.cpp.

References numericReverseOpt, and net::in6::SocketAddress::SocketAddress().

Here is the call graph for this function:

◆ init()

template<template< typename SocketAddress > typename ConfigAddressType>
SocketAddress * net::in6::config::ConfigAddress< ConfigAddressType >::init ( )
finalprivate

Definition at line 146 of file ConfigAddress.cpp.

146 {
148
149 try {
150 socketAddress->init({.aiFlags = (aiFlags & ~AI_NUMERICHOST) | (numericOpt->as<bool>() ? AI_NUMERICHOST : 0),
151 .aiSockType = aiSockType,
152 .aiProtocol = aiProtocol});
154 delete socketAddress;
155 socketAddress = nullptr;
156
157 throw;
158 }
159
160 return socketAddress;
161 }
SocketAddress * init() final

References hostOpt, net::in6::SocketAddress::init(), portOpt, and net::in6::SocketAddress::SocketAddress().

Here is the call graph for this function:

◆ setAiFlags()

template<template< typename SocketAddress > typename ConfigAddressType>
ConfigAddress< ConfigAddressType > & net::in6::config::ConfigAddress< ConfigAddressType >::setAiFlags ( int aiFlags)
protected

Definition at line 264 of file ConfigAddress.cpp.

264 {
265 this->aiFlags = aiFlags;
266
267 return *this;
268 }

References aiFlags.

Referenced by net::in6::stream::config::ConfigSocketServer::ConfigSocketServer().

Here is the caller graph for this function:

◆ setAiProtocol()

template<template< typename SocketAddress > typename ConfigAddressType>
ConfigAddress< ConfigAddressType > & net::in6::config::ConfigAddress< ConfigAddressType >::setAiProtocol ( int aiProtocol)
protected

Definition at line 288 of file ConfigAddress.cpp.

288 {
289 this->aiProtocol = aiProtocol;
290
291 return *this;
292 }

References aiProtocol.

Referenced by net::in6::stream::config::ConfigSocketClient::ConfigSocketClient(), and net::in6::stream::config::ConfigSocketServer::ConfigSocketServer().

Here is the caller graph for this function:

◆ setAiSockType()

template<template< typename SocketAddress > typename ConfigAddressType>
ConfigAddress< ConfigAddressType > & net::in6::config::ConfigAddress< ConfigAddressType >::setAiSockType ( int aiSocktype)
protected

Definition at line 276 of file ConfigAddress.cpp.

276 {
277 this->aiSockType = aiSockType;
278
279 return *this;
280 }

References aiSockType.

Referenced by net::in6::stream::config::ConfigSocketClient::ConfigSocketClient(), and net::in6::stream::config::ConfigSocketServer::ConfigSocketServer().

Here is the caller graph for this function:

◆ setHost()

template<template< typename SocketAddress > typename ConfigAddressType>
ConfigAddress< ConfigAddressType > & net::in6::config::ConfigAddress< ConfigAddressType >::setHost ( const std::string & ipOrHostname)

Definition at line 189 of file ConfigAddress.cpp.

189 {
191
192 hostOpt //
193 ->default_val(ipOrHostname)
194 ->clear();
195 Super::required(hostOpt, false);
196
197 return *this;
198 }

References hostOpt.

Referenced by setSocketAddress().

Here is the caller graph for this function:

◆ setHostRequired()

template<template< typename SocketAddress > typename ConfigAddressType>
ConfigAddress< ConfigAddressType > & net::in6::config::ConfigAddress< ConfigAddressType >::setHostRequired ( bool required = true)
protected

Definition at line 300 of file ConfigAddress.cpp.

300 {
302
303 return *this;
304 }

References hostOpt.

Referenced by net::in6::stream::config::ConfigSocketClient::ConfigSocketClient().

Here is the caller graph for this function:

◆ setIpv4Mapped()

template<template< typename SocketAddress > typename ConfigAddressType>
ConfigAddress< ConfigAddressType > & net::in6::config::ConfigAddress< ConfigAddressType >::setIpv4Mapped ( bool ipv4Mapped = true)
protected

Definition at line 248 of file ConfigAddress.cpp.

248 {
250
252 ->default_val(ipv4Mapped)
253 ->clear();
254
255 return *this;
256 }

References ipv4MappedOpt.

◆ setNumeric()

template<template< typename SocketAddress > typename ConfigAddressType>
ConfigAddress< ConfigAddressType > & net::in6::config::ConfigAddress< ConfigAddressType >::setNumeric ( bool numeric = true)

Definition at line 223 of file ConfigAddress.cpp.

223 {
225
226 numericOpt //
227 ->default_str(numeric ? "true" : "false")
228 ->clear();
229
230 return *this;
231 }

References numericOpt.

◆ setNumericReverse()

template<template< typename SocketAddress > typename ConfigAddressType>
ConfigAddress< ConfigAddressType > & net::in6::config::ConfigAddress< ConfigAddressType >::setNumericReverse ( bool numeric = true)

Definition at line 239 of file ConfigAddress.cpp.

239 {
241 ->default_str(numeric ? "true" : "false")
242 ->clear();
243
244 return *this;
245 }

References numericReverseOpt.

◆ setPort()

template<template< typename SocketAddress > typename ConfigAddressType>
ConfigAddress< ConfigAddressType > & net::in6::config::ConfigAddress< ConfigAddressType >::setPort ( uint16_t port)

Definition at line 206 of file ConfigAddress.cpp.

206 {
208
209 portOpt //
210 ->default_val(port)
211 ->clear();
212 Super::required(portOpt, false);
213
214 return *this;
215 }

References portOpt.

Referenced by setSocketAddress().

Here is the caller graph for this function:

◆ setPortRequired()

template<template< typename SocketAddress > typename ConfigAddressType>
ConfigAddress< ConfigAddressType > & net::in6::config::ConfigAddress< ConfigAddressType >::setPortRequired ( bool required = true)
protected

Definition at line 307 of file ConfigAddress.cpp.

307 {
309
310 return *this;
311 }

References portOpt.

Referenced by net::in6::stream::config::ConfigSocketClient::ConfigSocketClient(), and net::in6::stream::config::ConfigSocketServer::ConfigSocketServer().

Here is the caller graph for this function:

◆ setSocketAddress()

template<template< typename SocketAddress > typename ConfigAddressType>
ConfigAddress< ConfigAddressType > & net::in6::config::ConfigAddress< ConfigAddressType >::setSocketAddress ( const SocketAddress & socketAddress)

Definition at line 181 of file ConfigAddress.cpp.

181 {
184
185 return *this;
186 }
ConfigAddress & setPort(uint16_t port)
ConfigAddress & setHost(const std::string &ipOrHostname)

References net::in6::SocketAddress::getHost(), net::in6::SocketAddress::getPort(), setHost(), and setPort().

Here is the call graph for this function:

Member Data Documentation

◆ aiFlags

template<template< typename SocketAddressT > typename ConfigAddressTypeT>
int net::in6::config::ConfigAddress< ConfigAddressTypeT >::aiFlags = 0
private

Definition at line 143 of file ConfigAddress.h.

Referenced by getAiFlags(), and setAiFlags().

◆ aiProtocol

template<template< typename SocketAddressT > typename ConfigAddressTypeT>
int net::in6::config::ConfigAddress< ConfigAddressTypeT >::aiProtocol = 0
private

Definition at line 145 of file ConfigAddress.h.

Referenced by getAiProtocol(), and setAiProtocol().

◆ aiSockType

template<template< typename SocketAddressT > typename ConfigAddressTypeT>
int net::in6::config::ConfigAddress< ConfigAddressTypeT >::aiSockType = 0
private

Definition at line 144 of file ConfigAddress.h.

Referenced by getAiSockType(), and setAiSockType().

◆ hostOpt

template<template< typename SocketAddressT > typename ConfigAddressTypeT>
CLI::Option* net::in6::config::ConfigAddress< ConfigAddressTypeT >::hostOpt = nullptr
private

◆ ipv4MappedOpt

template<template< typename SocketAddressT > typename ConfigAddressTypeT>
CLI::Option* net::in6::config::ConfigAddress< ConfigAddressTypeT >::ipv4MappedOpt = nullptr
private

Definition at line 141 of file ConfigAddress.h.

Referenced by getIpv4Mapped(), and setIpv4Mapped().

◆ numericOpt

template<template< typename SocketAddressT > typename ConfigAddressTypeT>
CLI::Option* net::in6::config::ConfigAddress< ConfigAddressTypeT >::numericOpt = nullptr
private

Definition at line 139 of file ConfigAddress.h.

Referenced by getNumeric(), and setNumeric().

◆ numericReverseOpt

template<template< typename SocketAddressT > typename ConfigAddressTypeT>
CLI::Option* net::in6::config::ConfigAddress< ConfigAddressTypeT >::numericReverseOpt = nullptr
private

Definition at line 140 of file ConfigAddress.h.

Referenced by getSocketAddress(), and setNumericReverse().

◆ portOpt

template<template< typename SocketAddressT > typename ConfigAddressTypeT>
CLI::Option* net::in6::config::ConfigAddress< ConfigAddressTypeT >::portOpt = nullptr
private

Definition at line 138 of file ConfigAddress.h.

Referenced by getPort(), init(), setPort(), and setPortRequired().


The documentation for this class was generated from the following files: