1 #include "broker_config.h" 10 if (!config.IsMap()) {
11 throw config_error(
"The configuration is not a YAML map");
15 if (config[
"clients"] && config[
"clients"].IsMap()) {
16 if (config[
"clients"][
"address"] && config[
"clients"][
"address"].IsScalar()) {
17 client_address_ = config[
"clients"][
"address"].as<std::string>();
19 if (config[
"clients"][
"port"] && config[
"clients"][
"port"].IsScalar()) {
20 client_port_ = config[
"clients"][
"port"].as<uint16_t>();
25 if (config[
"workers"] && config[
"workers"].IsMap()) {
26 if (config[
"workers"][
"address"] && config[
"workers"][
"address"].IsScalar()) {
27 worker_address_ = config[
"workers"][
"address"].as<std::string>();
29 if (config[
"workers"][
"port"] && config[
"workers"][
"port"].IsScalar()) {
30 worker_port_ = config[
"workers"][
"port"].as<uint16_t>();
32 if (config[
"workers"][
"max_liveness"] && config[
"workers"][
"max_liveness"].IsScalar()) {
33 max_worker_liveness_ = config[
"workers"][
"max_liveness"].as<
size_t>();
35 if (config[
"workers"][
"max_request_failures"] && config[
"workers"][
"max_request_failures"].IsScalar()) {
36 max_request_failures_ = config[
"workers"][
"max_request_failures"].as<
size_t>();
38 if (config[
"workers"][
"ping_interval"] && config[
"workers"][
"ping_interval"].IsScalar()) {
39 worker_ping_interval_ = std::chrono::milliseconds(config[
"workers"][
"ping_interval"].as<size_t>());
44 if (config[
"monitor"] && config[
"monitor"].IsMap()) {
45 if (config[
"monitor"][
"address"] && config[
"monitor"][
"address"].IsScalar()) {
46 monitor_address_ = config[
"monitor"][
"address"].as<std::string>();
48 if (config[
"monitor"][
"port"] && config[
"monitor"][
"port"].IsScalar()) {
49 monitor_port_ = config[
"monitor"][
"port"].as<uint16_t>();
54 if (config[
"notifier"] && config[
"notifier"].IsMap()) {
55 if (config[
"notifier"][
"address"] && config[
"notifier"][
"address"].IsScalar()) {
56 notifier_config_.
address = config[
"notifier"][
"address"].as<std::string>();
58 if (config[
"notifier"][
"port"] && config[
"notifier"][
"port"].IsScalar()) {
59 notifier_config_.
port = config[
"notifier"][
"port"].as<uint16_t>();
61 if (config[
"notifier"][
"username"] && config[
"notifier"][
"username"].IsScalar()) {
62 notifier_config_.
username = config[
"notifier"][
"username"].as<std::string>();
64 if (config[
"notifier"][
"password"] && config[
"notifier"][
"password"].IsScalar()) {
65 notifier_config_.
password = config[
"notifier"][
"password"].as<std::string>();
70 if (config[
"logger"] && config[
"logger"].IsMap()) {
71 if (config[
"logger"][
"file"] && config[
"logger"][
"file"].IsScalar()) {
72 fs::path tmp = config[
"logger"][
"file"].as<std::string>();
74 log_config_.
log_path = tmp.parent_path().string();
76 if (config[
"logger"][
"level"] && config[
"logger"][
"level"].IsScalar()) {
77 log_config_.
log_level = config[
"logger"][
"level"].as<std::string>();
79 if (config[
"logger"][
"max-size"] && config[
"logger"][
"max-size"].IsScalar()) {
80 log_config_.
log_file_size = config[
"logger"][
"max-size"].as<
size_t>();
82 if (config[
"logger"][
"rotations"] && config[
"logger"][
"rotations"].IsScalar()) {
83 log_config_.
log_files_count = config[
"logger"][
"rotations"].as<
size_t>();
86 }
catch (YAML::Exception &ex) {
87 throw config_error(
"Default broker configuration was not loaded: " + std::string(ex.what()));
93 return client_address_;
103 return worker_address_;
113 return monitor_address_;
118 return monitor_port_;
123 return max_worker_liveness_;
128 return worker_ping_interval_;
138 return notifier_config_;
143 return max_request_failures_;
virtual uint16_t get_monitor_port() const
virtual const std::string & get_monitor_address() const
virtual const std::string & get_client_address() const
const notifier_config & get_notifier_config() const
virtual uint16_t get_client_port() const
virtual const std::string & get_worker_address() const
virtual uint16_t get_worker_port() const
const log_config & get_log_config() const
virtual size_t get_max_worker_liveness() const
virtual std::chrono::milliseconds get_worker_ping_interval() const
virtual size_t get_max_request_failures() const