11 #ifndef GCOMM_CONF_HPP
12 #define GCOMM_CONF_HPP
14 #include "gu_config.hpp"
16 #include "gu_throw.hpp"
47 static std::string
const ProtonetBackend;
48 static std::string
const ProtonetVersion;
168 static std::string
const GMCastTimeWait;
169 static std::string
const GMCastPeerTimeout;
261 static std::string
const EvsInstallTimeout;
423 static void register_params(gu::Config&);
429 template <
typename T> T _conf_param(
const gu::URI& uri,
430 const std::string& param,
431 const T* default_value = 0,
432 const T* min_value = 0,
433 const T* max_value = 0)
438 ret = gu::from_string<T>(uri.get_option(param));
440 catch (gu::NotFound& e)
443 if (default_value == 0)
445 gu_throw_error(EINVAL)
446 <<
"param " << param <<
" not found from uri "
450 ret = *default_value;
453 if (min_value != 0 && *min_value > ret)
455 gu_throw_error(EINVAL)
456 <<
"param " << param <<
" value " << ret <<
" out of range "
457 <<
"min allowed " << *min_value;
460 if (max_value != 0 && *max_value < ret)
462 gu_throw_error(EINVAL)
463 <<
"param " << param <<
" value " << ret <<
" out of range "
464 <<
"max allowed " << *max_value;
469 template <
typename T> T conf_param(
const gu::URI& uri,
470 const std::string& param)
472 return _conf_param<T>(uri, param, 0, 0, 0);
475 template <
typename T> T conf_param_def(
const gu::URI& uri,
476 const std::string& param,
477 const T& default_value)
479 return _conf_param(uri, param, &default_value);
482 template <
typename T> T conf_param_range(
const gu::URI& uri,
483 const std::string& param,
487 return _conf_param(uri, param, 0, &min_value, &max_value);
490 template <
typename T> T conf_param_def_min(
const gu::URI& uri,
491 const std::string& param,
492 const T& default_value,
496 return _conf_param(uri, param, &default_value, &min_value);
499 template <
typename T> T conf_param_def_max(
const gu::URI& uri,
500 const std::string& param,
501 const T& default_value,
505 return _conf_param(uri, param, &default_value,
506 reinterpret_cast<const T*>(0), &max_value);
509 template <
typename T> T conf_param_def_range(
const gu::URI& uri,
510 const std::string& param,
511 const T& default_value,
515 return _conf_param(uri, param, &default_value, &min_value, &max_value);
520 template <
typename T>
521 T param(gu::Config& conf,
523 const std::string& key,
524 const std::string& def,
525 std::ios_base& (*f)(std::ios_base&) = std::dec)
527 std::string ret(def);
528 ret = conf.get(key, ret);
529 return gu::from_string<T>(uri.get_option(key, ret), f);
532 template <
typename T>
533 T check_range(
const std::string& key,
538 if (val < min || val >= max)
540 gu_throw_error(ERANGE) <<
"param '" << key <<
"' value " << val
541 <<
" out of range [" << min
542 <<
"," << max <<
")";
549 #endif // GCOMM_CONF_HPP
static std::string const EvsSuspectTimeout
EVS suspect timeout ("evs.suspect_timeout")
Definition: conf.hpp:236
static std::string const GMCastGroup
GMCast group name ("gmcast.group")
Definition: conf.hpp:127
static std::string const GMCastPeerAddr
Add or remove peer address.
Definition: conf.hpp:185
static std::string const PcWeight
Node weight in prim comp voting.
Definition: conf.hpp:421
static std::string const GMCastMaxInitialReconnectAttempts
Maximum initial reconnect attempts.
Definition: conf.hpp:176
static std::string const PcVersion
PC protocol version.
Definition: conf.hpp:362
static std::string const EvsStatsReportPeriod
EVS statistics reporting period ("evs.stats_report_period")
Definition: conf.hpp:292
static std::string const GMCastSegment
Segment identifier for segmentation.
Definition: conf.hpp:201
static std::string const EvsMaxInstallTimeouts
EVS maximum install timeouts ("evs.max_install_timeouts")
Definition: conf.hpp:352
static std::string const EvsSendWindow
EVS send window ("evs.send_window")
Definition: conf.hpp:319
static std::string const GMCastScheme
GMCast scheme for transport URI ("gmcast")
Definition: conf.hpp:114
static std::string const EvsKeepalivePeriod
EVS keepalive period ("evs.keepalive_period")
Definition: conf.hpp:272
static std::string const SocketSslPrivateKeyFile
File containing private key associated with certificate ("socket.ssl_private_key_file") ...
Definition: conf.hpp:85
static std::string const PcWaitPrim
Wait for prim comp unconditionally if set to true.
Definition: conf.hpp:411
static std::string const PcIgnoreSb
PC split-brain mode.
Definition: conf.hpp:370
static std::string const SocketSslCipherList
Cipher list for SSL connections (socket.ssl_cipher_list)
Definition: conf.hpp:96
static std::string const GMCastMCastPort
GMCast multicast port ("gmcast.mcast_port")
Definition: conf.hpp:156
static std::string const EvsJoinRetransPeriod
EVS join retransmission period ("evs.join_retrans_period")
Definition: conf.hpp:282
static std::string const SocketSslVerifyFile
File containing CA certificates in PEM format ("socket.ssl_verify_file")
Definition: conf.hpp:70
static std::string const GMCastListenAddr
GMCast listening address ("gmcast.listen_addr")
Definition: conf.hpp:138
static std::string const PcNpvo
PC newer prim view overrides.
Definition: conf.hpp:401
static std::string const GMCastVersion
GMCast protocol version.
Definition: conf.hpp:119
static std::string const GMCastMCastAddr
GMCast multicast address ("gmcast.mcast_addr")
Definition: conf.hpp:148
static std::string const EvsInfoLogMask
EVS info log mask ("evs.info_log_mask")
Definition: conf.hpp:310
static std::string const EvsUserSendWindow
EVS user send window ("evs.user_send_window")
Definition: conf.hpp:327
static std::string const EvsInactiveTimeout
EVS inactive timeout ("evs.inactive_timeout")
Definition: conf.hpp:247
static std::string const PcAnnounceTimeout
PC starup announce timeout.
Definition: conf.hpp:391
static std::string const SocketUseSsl
Use SSL sockets for communication.
Definition: conf.hpp:64
static std::string const PcBootstrap
If set during runtime bootstraps new PC.
Definition: conf.hpp:406
static std::string const EvsInactiveCheckPeriod
EVS inactive check period ("evs.inactive_check_period")
Definition: conf.hpp:258
static std::string const PcIgnoreQuorum
PC quorum mode.
Definition: conf.hpp:378
static std::string const PcChecksum
PC message checksumming.
Definition: conf.hpp:386
static std::string const PcScheme
PC scheme for transport URI ("pc")
Definition: conf.hpp:357
static std::string const PcWaitPrimTimeout
Timeout on waiting for primary component.
Definition: conf.hpp:416
static std::string const SocketChecksum
Algorithm for message checksums: 0 - none (backward compatible) 1 - CRC-32 (backward compatible) 2 - ...
Definition: conf.hpp:109
static std::string const GMCastIsolate
Isolate node from peers.
Definition: conf.hpp:196
static std::string const EvsDebugLogMask
EVS debug log mask ("evs.debug_log_mask")
Definition: conf.hpp:302
static std::string const SocketSslPasswordFile
File containing password used to protect private key file ("socket.ssl_password_file") ...
Definition: conf.hpp:91
static std::string const EvsCausalKeepalivePeriod
Period to generate keepalives for causal messages.
Definition: conf.hpp:343
static std::string const EvsScheme
EVS scheme for transport URI ("evs")
Definition: conf.hpp:207
static std::string const SocketSslCompression
Disable compression boolean (socket.ssl_disable_compression)
Definition: conf.hpp:101
static std::string const GMCastMCastTTL
GMCast multicast TTL ("gmcast.mcast_ttl")
Definition: conf.hpp:166
static std::string const EvsViewForgetTimeout
EVS view forget timeout ("evs.view_forget_timeout")
Definition: conf.hpp:223
static std::string const EvsVersion
EVS protocol version.
Definition: conf.hpp:212
static std::string const PcLinger
PC close linger timeout.
Definition: conf.hpp:396
static std::string const TcpNonBlocking
TCP non-blocking flag ("socket.non_blocking")
Definition: conf.hpp:56
static std::string const EvsUseAggregate
EVS message aggregation mode ("evs.use_aggregate")
Definition: conf.hpp:337
static std::string const SocketSslCertificateFile
File containing certificate to use in PEM format ("socket.ssl_certificate_file")
Definition: conf.hpp:76