From 53d36d85695d687681f26454656e9a40203eb586 Mon Sep 17 00:00:00 2001 From: Julien Clement Date: Wed, 6 May 2020 19:07:37 +0200 Subject: [PATCH] Self if now also in legislators map --- src/config/config.cc | 20 +++++++------------- src/config/config.hh | 5 +---- src/main.cc | 7 ++++--- 3 files changed, 12 insertions(+), 20 deletions(-) diff --git a/src/config/config.cc b/src/config/config.cc index ca51ab8..d0a76a3 100644 --- a/src/config/config.cc +++ b/src/config/config.cc @@ -8,9 +8,8 @@ namespace paxos { - ServerConfig::ServerConfig(const std::vector& legislators, - const LegislatorConfig& self) - : legislators_(legislators), self_(self) + ServerConfig::ServerConfig(const std::vector& legislators) + : legislators_(legislators) { } @@ -60,8 +59,8 @@ namespace paxos } - static std::pair, LegislatorConfig> - parse_legislators(const json& j, const std::string& name) + static std::vector parse_legislators(const json& j, + const std::string& name) { /* Get 'vhosts' value */ std::vector legislators; @@ -69,21 +68,16 @@ namespace paxos /* Create VHostConfig vector and fill with VHostConfig */ std::vector legislator_configs; - LegislatorConfig self; for (auto it : legislators) { /* Differenciable vhost checking */ auto legislator = it.get(); legislator.is_self = name == legislator.name; - if (!legislator.is_self) - legislator_configs.push_back(legislator); - else - self = legislator; + legislator_configs.push_back(legislator); } - return std::pair, LegislatorConfig> - (legislator_configs, self); + return legislator_configs; } @@ -115,6 +109,6 @@ namespace paxos auto legislators = parse_legislators(json_dict, name); - return ServerConfig(legislators.first, legislators.second); + return ServerConfig(legislators); } } diff --git a/src/config/config.hh b/src/config/config.hh index 388342d..f32142a 100644 --- a/src/config/config.hh +++ b/src/config/config.hh @@ -16,13 +16,10 @@ namespace paxos struct ServerConfig { - ServerConfig(const std::vector& legislators, - const LegislatorConfig& self); + ServerConfig(const std::vector& legislators); std::vector legislators_; - LegislatorConfig self_; - static ServerConfig parse(char **argv); }; } diff --git a/src/main.cc b/src/main.cc index 1d17460..47f7043 100644 --- a/src/main.cc +++ b/src/main.cc @@ -36,11 +36,12 @@ int main(int argc, char **argv) ev_signal_init(&sigstop_watcher, sigstop_cb, SIGTSTP); paxos::event_register.get_event_loop().register_sigint_watcher(&sigstop_watcher); - paxos::self = paxos::LegislatorFactory::Create(server_config.self_); - for (auto config : server_config.legislators_) { - paxos::legislators.insert(std::pair(config.name, paxos::LegislatorFactory::Create(config))); + paxos::shared_legislator legislator = paxos::LegislatorFactory::Create(config); + paxos::legislators.insert(std::pair(config.name, legislator)); + if (config.is_self) + paxos::self = legislator; } paxos::event_register.get_event_loop()();