14auto main(
int argc,
char** argv) ->
int {
17 std::cout <<
"Usage: " << args[0]
18 <<
" <config file> <shard ID> <node ID>" << std::endl;
23 if(std::holds_alternative<std::string>(cfg_or_err)) {
24 std::cerr <<
"Error loading config file: "
25 << std::get<std::string>(cfg_or_err) << std::endl;
28 auto cfg = std::get<cbdc::config::options>(cfg_or_err);
29 auto shard_id = std::stoull(args[2]);
30 auto node_id = std::stoull(args[3]);
32 if(cfg.m_locking_shard_endpoints.size() <= shard_id) {
33 std::cerr <<
"Shard ID not in config file" << std::endl;
37 if(cfg.m_locking_shard_endpoints[shard_id].size() <= node_id) {
38 std::cerr <<
"Shard node ID not in config file" << std::endl;
42 auto logger = std::make_shared<cbdc::logging::log>(
43 cfg.m_shard_loglevels[shard_id]);
45 std::string sha2_impl(SHA256AutoDetect());
46 logger->info(
"using sha2: ", sha2_impl);
50 logger->error(
"Failed to initialize locking shard");
54 static std::atomic_bool running{
true};
57 std::signal(SIGINT, [](
int ) {
61 logger->info(
"Shard running...");
64 static constexpr auto running_check_delay
65 = std::chrono::milliseconds(1000);
66 std::this_thread::sleep_for(running_check_delay);
69 logger->info(
"Shutting down...");