2020-05-05 12:11:54 +00:00
|
|
|
#include <iostream>
|
|
|
|
|
|
|
|
#include "config/config.hh"
|
2020-05-05 12:47:12 +00:00
|
|
|
#include "legislator/legislator-factory.hh"
|
2020-05-05 13:39:59 +00:00
|
|
|
#include "events/register.hh"
|
2020-05-05 12:11:54 +00:00
|
|
|
|
2020-05-05 13:39:59 +00:00
|
|
|
paxos::EventWatcherRegistry paxos::event_register;
|
2020-05-05 12:11:54 +00:00
|
|
|
|
2020-05-05 13:59:10 +00:00
|
|
|
ev_signal sigint_watcher;
|
|
|
|
static void sigint_cb(struct ev_loop* loop, ev_signal*, int)
|
|
|
|
{
|
|
|
|
ev_break(loop, EVBREAK_ALL);
|
|
|
|
}
|
|
|
|
|
|
|
|
|
2020-05-05 12:11:54 +00:00
|
|
|
int main(int, char **argv)
|
2020-05-05 11:11:48 +00:00
|
|
|
{
|
2020-05-05 12:47:12 +00:00
|
|
|
paxos::ServerConfig server_config = paxos::ServerConfig::parse(argv[1]);
|
|
|
|
|
2020-05-05 13:59:10 +00:00
|
|
|
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_);
|
|
|
|
|
2020-05-05 12:47:12 +00:00
|
|
|
for (auto config : server_config.legislators_)
|
|
|
|
{
|
|
|
|
paxos::LegislatorFactory::Create(config);
|
|
|
|
}
|
2020-05-05 13:59:10 +00:00
|
|
|
|
|
|
|
paxos::event_register.get_event_loop()();
|
|
|
|
return 0;
|
2020-05-05 11:11:48 +00:00
|
|
|
}
|