13auto main(
int argc,
char** argv) ->
int {
17 std::cerr <<
"Usage: " << args[0]
18 <<
" <config file> <archiver id> [<max samples>]"
23 size_t max_samples{0};
25 max_samples =
static_cast<size_t>(std::stoull(args[3]));
29 if(std::holds_alternative<std::string>(cfg_or_err)) {
30 std::cerr <<
"Error loading config file: "
31 << std::get<std::string>(cfg_or_err) << std::endl;
34 auto opts = std::get<cbdc::config::options>(cfg_or_err);
36 const auto archiver_id = std::stoull(args[2]);
38 if(opts.m_archiver_endpoints.size() <= archiver_id) {
39 std::cerr <<
"Archiver ID not in config file" << std::endl;
43 auto logger = std::make_shared<cbdc::logging::log>(
44 opts.m_archiver_loglevels[archiver_id]);
57 static std::atomic_bool running{
true};
60 std::signal(SIGINT, [](
int ) {
64 logger->info(
"Archiver running...");
66 while(running && ctl.running()) {
67 static constexpr auto running_check_delay
68 = std::chrono::milliseconds(1000);
69 std::this_thread::sleep_for(running_check_delay);
72 logger->info(
"Shutting down...");