diff --git a/src/main.cc b/src/main.cc index 7945368..0aee9f8 100644 --- a/src/main.cc +++ b/src/main.cc @@ -6,12 +6,27 @@ paxos::EventWatcherRegistry paxos::event_register; +ev_signal sigint_watcher; +static void sigint_cb(struct ev_loop* loop, ev_signal*, int) +{ + ev_break(loop, EVBREAK_ALL); +} + + int main(int, char **argv) { paxos::ServerConfig server_config = paxos::ServerConfig::parse(argv[1]); + ev_signal_init(&sigint_watcher, sigint_cb, SIGINT); + paxos::event_register.get_event_loop().register_sigint_watcher(&sigint_watcher); + + paxos::LegislatorFactory::Create(server_config.self_); + for (auto config : server_config.legislators_) { paxos::LegislatorFactory::Create(config); } + + paxos::event_register.get_event_loop()(); + return 0; }