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 66 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 68 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 87 of file ConfigAddress.cpp.

90 : Super(instance, addressOptionName, addressOptionDescription) {
91 hostOpt = Super::addOption( //
92 "--host",
93 "Host name or IPv4 address",
94 "hostname|IPv4",
95 "0.0.0.0",
96 CLI::TypeValidator<std::string>());
97
98 portOpt = Super::addOption( //
99 "--port",
100 "Port number",
101 "port",
102 0,
103 CLI::Range(std::numeric_limits<uint16_t>::min(), std::numeric_limits<uint16_t>::max()));
104
105 numericOpt = Super::addFlag( //
106 "--numeric{true}",
107 "Suppress host name lookup",
108 "bool",
109 XSTR(IPV4_NUMERIC),
110 CLI::IsMember({"true", "false"}));
111
112 numericReverseOpt = Super::addFlag( //
113 "--numeric-reverse{true}",
114 "Suppress reverse host name lookup",
115 "bool",
116 XSTR(IPV4_NUMERIC_REVERSE),
117 CLI::IsMember({"true", "false"}));
118 }
#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 235 of file ConfigAddress.cpp.

235 {
236 return aiFlags;
237 }

◆ getAiProtocol()

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

Definition at line 259 of file ConfigAddress.cpp.

259 {
260 return aiProtocol;
261 }

◆ getAiSockType()

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

Definition at line 247 of file ConfigAddress.cpp.

247 {
248 return aiSockType;
249 }

◆ getHost()

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

Definition at line 176 of file ConfigAddress.cpp.

176 {
177 return hostOpt->as<std::string>();
178 }

◆ getNumeric()

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

Definition at line 209 of file ConfigAddress.cpp.

209 {
210 return numericOpt->as<bool>();
211 }

◆ getNumericReverse()

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

Definition at line 223 of file ConfigAddress.cpp.

223 {
224 return numericReverseOpt->as<bool>();
225 }

◆ getPort()

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

Definition at line 193 of file ConfigAddress.cpp.

193 {
194 return portOpt->as<uint16_t>();
195 }

◆ getSocketAddress()

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

Definition at line 139 of file ConfigAddress.cpp.

140 {
141 SocketAddress socketAddress;
142 try {
143 socketAddress = SocketAddress(sockAddr, sockAddrLen, numericReverseOpt->as<bool>());
144 } catch ([[maybe_unused]] const SocketAddress::BadSocketAddress& badSocketAddress) {
145 try {
146 socketAddress = Super::getSocketAddress(sockAddr, sockAddrLen);
147 } catch ([[maybe_unused]] const SocketAddress::BadSocketAddress& badSocketAddress) {
148 throw;
149 }
150 }
151
152 return socketAddress;
153 }
SocketClient::SocketAddress SocketAddress

◆ init()

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

Definition at line 121 of file ConfigAddress.cpp.

121 {
122 SocketAddress* socketAddress = new SocketAddress(hostOpt->as<std::string>(), portOpt->as<uint16_t>());
123
124 try {
125 socketAddress->init({.aiFlags = (aiFlags & ~AI_NUMERICHOST) | (numericOpt->as<bool>() ? AI_NUMERICHOST : 0),
128 } catch ([[maybe_unused]] const core::socket::SocketAddress::BadSocketAddress& badSocketAddress) {
129 delete socketAddress;
130 socketAddress = nullptr;
131
132 throw;
133 }
134
135 return socketAddress;
136 }

◆ setAiFlags()

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

Definition at line 228 of file ConfigAddress.cpp.

228 {
229 this->aiFlags = aiFlags;
230
231 return *this;
232 }

◆ setAiProtocol()

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

Definition at line 252 of file ConfigAddress.cpp.

252 {
253 this->aiProtocol = aiProtocol;
254
255 return *this;
256 }

◆ setAiSockType()

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

Definition at line 240 of file ConfigAddress.cpp.

240 {
241 this->aiSockType = aiSockType;
242
243 return *this;
244 }

◆ setHost()

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

Definition at line 164 of file ConfigAddress.cpp.

164 {
165 const utils::PreserveErrno preserveErrno;
166
167 hostOpt //
168 ->default_val(ipOrHostname)
169 ->clear();
170 Super::required(hostOpt, false);
171
172 return *this;
173 }

◆ setHostRequired()

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

Definition at line 264 of file ConfigAddress.cpp.

264 {
265 Super::required(hostOpt, required);
266
267 return *this;
268 }

◆ setNumeric()

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

Definition at line 198 of file ConfigAddress.cpp.

198 {
199 const utils::PreserveErrno preserveErrno;
200
201 numericOpt //
202 ->default_str(numeric ? "true" : "false")
203 ->clear();
204
205 return *this;
206 }

◆ setNumericReverse()

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

Definition at line 214 of file ConfigAddress.cpp.

214 {
216 ->default_str(numeric ? "true" : "false")
217 ->clear();
218
219 return *this;
220 }

◆ setPort()

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

Definition at line 181 of file ConfigAddress.cpp.

181 {
182 const utils::PreserveErrno preserveErrno;
183
184 portOpt //
185 ->default_val(port)
186 ->clear();
187 Super::required(portOpt, false);
188
189 return *this;
190 }

◆ setPortRequired()

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

Definition at line 271 of file ConfigAddress.cpp.

271 {
272 Super::required(portOpt, required);
273
274 return *this;
275 }

◆ setSocketAddress()

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

Definition at line 156 of file ConfigAddress.cpp.

156 {
157 setHost(socketAddress.getHost());
158 setPort(socketAddress.getPort());
159
160 return *this;
161 }
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 115 of file ConfigAddress.h.

◆ aiProtocol

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

Definition at line 117 of file ConfigAddress.h.

◆ aiSockType

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

Definition at line 116 of file ConfigAddress.h.

◆ hostOpt

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

Definition at line 110 of file ConfigAddress.h.

◆ numericOpt

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

Definition at line 112 of file ConfigAddress.h.

◆ numericReverseOpt

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

Definition at line 113 of file ConfigAddress.h.

◆ portOpt

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

Definition at line 111 of file ConfigAddress.h.


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