int main()

in health_metric_collector/src/collector.cpp [44:82]


int main(int argc, char ** argv)
{
  ros::init(argc, argv, DEFAULT_NODE_NAME);

  auto param_reader = std::make_shared<Ros1NodeParameterReader>();

  // get interval param
  double interval = DEFAULT_INTERVAL_SEC;
  param_reader->ReadParam(ParameterPath(INTERVAL_PARAM_NAME), interval);

  // get robot id
  std::string robot_id = DEFAULT_ROBOT_ID;
  param_reader->ReadParam(ParameterPath(ROBOT_ID_DIMENSION), robot_id);

  // advertise
  ros::NodeHandle public_nh;
  ros::Publisher publisher =
    public_nh.advertise<ros_monitoring_msgs::MetricList>(METRICS_TOPIC_NAME, TOPIC_BUFFER_SIZE);
  AWS_LOG_INFO(__func__, "Starting Health Metric Collector Node...");
  MetricManager mg(publisher);
  mg.AddDimension(ROBOT_ID_DIMENSION, robot_id);
  mg.AddDimension(CATEGORY_DIMENSION, HEALTH_CATEGORY);

  std::vector<MetricCollectorInterface *> collectors;
  CPUMetricCollector cpu_collector(mg);
  collectors.push_back(&cpu_collector);

  SysInfoCollector sys_collector(mg);
  collectors.push_back(&sys_collector);

  // start metrics collection
  CollectAndPublish f(mg, collectors);
  ros::NodeHandle nh("~");
  ros::Timer timer = nh.createTimer(ros::Duration(interval), f);

  ros::spin();
  AWS_LOG_INFO(__func__, "Shutting down Health Metric Collector Node...");
  return 0;
}