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

#include <ConfigAddress.h>

Inheritance diagram for net::in::config::ConfigAddress< ConfigAddressTypeT >:
Collaboration diagram for net::in::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)
 
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<net::in::SocketAddress>
 

Private Member Functions

SocketAddressinit () final
 

Private Attributes

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

Detailed Description

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

Definition at line 88 of file ConfigAddress.h.

Member Typedef Documentation

◆ Super

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

Definition at line 90 of file ConfigAddress.h.

Constructor & Destructor Documentation

◆ ConfigAddress()

template<template< typename SocketAddress > typename ConfigAddressType>
net::in::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.

112 : Super(instance, addressOptionName, addressOptionDescription) {
113 hostOpt = Super::addOption( //
114 "--host",
115 "Host name or IPv4 address",
116 "hostname|IPv4",
117 "0.0.0.0",
118 CLI::TypeValidator<std::string>());
119
120 portOpt = Super::addOption( //
121 "--port",
122 "Port number",
123 "port",
124 0,
125 CLI::Range(std::numeric_limits<uint16_t>::min(), std::numeric_limits<uint16_t>::max()));
126
127 numericOpt = Super::addFlag( //
128 "--numeric{true}",
129 "Suppress host name lookup",
130 "bool",
131 XSTR(IN_NUMERIC),
132 CLI::IsMember({"true", "false"}));
133
134 numericReverseOpt = Super::addFlag( //
135 "--numeric-reverse{true}",
136 "Suppress reverse host name lookup",
137 "bool",
138 XSTR(IN_NUMERIC_REVERSE),
139 CLI::IsMember({"true", "false"}));
140 }
#define XSTR(s)
ConfigAddressTypeT< net::in::SocketAddress > Super

Member Function Documentation

◆ getAiFlags()

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

Definition at line 257 of file ConfigAddress.cpp.

257 {
258 return aiFlags;
259 }

◆ getAiProtocol()

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

Definition at line 281 of file ConfigAddress.cpp.

281 {
282 return aiProtocol;
283 }

◆ getAiSockType()

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

Definition at line 269 of file ConfigAddress.cpp.

269 {
270 return aiSockType;
271 }

◆ getHost()

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

Definition at line 198 of file ConfigAddress.cpp.

198 {
199 return hostOpt->as<std::string>();
200 }

◆ getNumeric()

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

Definition at line 231 of file ConfigAddress.cpp.

231 {
232 return numericOpt->as<bool>();
233 }

◆ getNumericReverse()

template<template< typename SocketAddress > typename ConfigAddressType>
bool net::in::config::ConfigAddress< ConfigAddressType >::getNumericReverse ( ) const

Definition at line 245 of file ConfigAddress.cpp.

245 {
246 return numericReverseOpt->as<bool>();
247 }

◆ getPort()

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

Definition at line 215 of file ConfigAddress.cpp.

215 {
216 return portOpt->as<uint16_t>();
217 }

◆ getSocketAddress()

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

Definition at line 161 of file ConfigAddress.cpp.

162 {
163 SocketAddress socketAddress;
164 try {
165 socketAddress = SocketAddress(sockAddr, sockAddrLen, numericReverseOpt->as<bool>());
166 } catch ([[maybe_unused]] const SocketAddress::BadSocketAddress& badSocketAddress) {
167 try {
168 socketAddress = Super::getSocketAddress(sockAddr, sockAddrLen);
169 } catch ([[maybe_unused]] const SocketAddress::BadSocketAddress& badSocketAddress) {
170 throw;
171 }
172 }
173
174 return socketAddress;
175 }
SocketClient::SocketAddress SocketAddress

◆ init()

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

Definition at line 143 of file ConfigAddress.cpp.

143 {
144 SocketAddress* socketAddress = new SocketAddress(hostOpt->as<std::string>(), portOpt->as<uint16_t>());
145
146 try {
147 socketAddress->init({.aiFlags = (aiFlags & ~AI_NUMERICHOST) | (numericOpt->as<bool>() ? AI_NUMERICHOST : 0),
150 } catch ([[maybe_unused]] const core::socket::SocketAddress::BadSocketAddress& badSocketAddress) {
151 delete socketAddress;
152 socketAddress = nullptr;
153
154 throw;
155 }
156
157 return socketAddress;
158 }

◆ setAiFlags()

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

Definition at line 250 of file ConfigAddress.cpp.

250 {
251 this->aiFlags = aiFlags;
252
253 return *this;
254 }

◆ setAiProtocol()

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

Definition at line 274 of file ConfigAddress.cpp.

274 {
275 this->aiProtocol = aiProtocol;
276
277 return *this;
278 }

◆ setAiSockType()

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

Definition at line 262 of file ConfigAddress.cpp.

262 {
263 this->aiSockType = aiSockType;
264
265 return *this;
266 }

◆ setHost()

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

Definition at line 186 of file ConfigAddress.cpp.

186 {
187 const utils::PreserveErrno preserveErrno;
188
189 hostOpt //
190 ->default_val(ipOrHostname)
191 ->clear();
192 Super::required(hostOpt, false);
193
194 return *this;
195 }

◆ setHostRequired()

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

Definition at line 286 of file ConfigAddress.cpp.

286 {
287 Super::required(hostOpt, required);
288
289 return *this;
290 }

◆ setNumeric()

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

Definition at line 220 of file ConfigAddress.cpp.

220 {
221 const utils::PreserveErrno preserveErrno;
222
223 numericOpt //
224 ->default_str(numeric ? "true" : "false")
225 ->clear();
226
227 return *this;
228 }

◆ setNumericReverse()

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

Definition at line 236 of file ConfigAddress.cpp.

236 {
238 ->default_str(numeric ? "true" : "false")
239 ->clear();
240
241 return *this;
242 }

◆ setPort()

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

Definition at line 203 of file ConfigAddress.cpp.

203 {
204 const utils::PreserveErrno preserveErrno;
205
206 portOpt //
207 ->default_val(port)
208 ->clear();
209 Super::required(portOpt, false);
210
211 return *this;
212 }

◆ setPortRequired()

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

Definition at line 293 of file ConfigAddress.cpp.

293 {
294 Super::required(portOpt, required);
295
296 return *this;
297 }

◆ setSocketAddress()

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

Definition at line 178 of file ConfigAddress.cpp.

178 {
179 setHost(socketAddress.getHost());
180 setPort(socketAddress.getPort());
181
182 return *this;
183 }
ConfigAddress & setHost(const std::string &ipOrHostname)
ConfigAddress & setPort(uint16_t port)

Member Data Documentation

◆ aiFlags

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

Definition at line 137 of file ConfigAddress.h.

◆ aiProtocol

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

Definition at line 139 of file ConfigAddress.h.

◆ aiSockType

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

Definition at line 138 of file ConfigAddress.h.

◆ hostOpt

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

Definition at line 132 of file ConfigAddress.h.

◆ numericOpt

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

Definition at line 134 of file ConfigAddress.h.

◆ numericReverseOpt

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

Definition at line 135 of file ConfigAddress.h.

◆ portOpt

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

Definition at line 133 of file ConfigAddress.h.


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