int main()

in aws/kinesis/main.cc [357:406]


int main(int argc, char* const* argv) {

  process_options(argc, argv);
  aws::utils::setup_logging(options.boost_log_level);
  aws::utils::setup_aws_logging(options.aws_log_level);
  Aws::SDKOptions sdk_options;
  Aws::InitAPI(sdk_options);

  if (options.enable_stack_trace) {
    aws::utils::setup_stack_trace(argv[0]);
  }

  try {
    auto config = get_config(options.configuration);

    if (config->enable_core_dumps()) {
      set_core_limit();
    }

    aws::utils::set_log_level(config->log_level());

    auto executor = get_executor();
    auto region = get_region(*config);
    auto creds_providers = get_creds_providers();
    auto ipc_manager = get_ipc_manager(options.output_pipe, options.input_pipe);
    auto ca_path = get_ca_path();
    LOG(info) << "Starting up main producer";

    aws::kinesis::core::KinesisProducer kp(
        ipc_manager,
        region,
        config,
        creds_providers.first,
        creds_providers.second,
        executor,
        ca_path);

    LOG(info) << "Entering join";

    // Never returns
    kp.join();
  } catch (const std::exception& e) {
    LOG(error) << e.what();
    return 2;
  } catch (int code) {
    return code;
  }

  return 0;
}