Apollo 10.0
自动驾驶开放平台
apollo::monitor::ProcessMonitor类 参考

#include <process_monitor.h>

类 apollo::monitor::ProcessMonitor 继承关系图:
apollo::monitor::ProcessMonitor 的协作图:

Public 成员函数

 ProcessMonitor ()
 
void RunOnce (const double current_time) override
 
- Public 成员函数 继承自 apollo::monitor::RecurrentRunner
 RecurrentRunner (const std::string &name, const double interval)
 
virtual ~RecurrentRunner ()=default
 
void Tick (const double current_time)
 

额外继承的成员函数

- Protected 属性 继承自 apollo::monitor::RecurrentRunner
std::string name_
 
unsigned int round_count_ = 0
 

详细描述

在文件 process_monitor.h29 行定义.

构造及析构函数说明

◆ ProcessMonitor()

apollo::monitor::ProcessMonitor::ProcessMonitor ( )

在文件 process_monitor.cc36 行定义.

37 : RecurrentRunner(FLAGS_process_monitor_name,
38 FLAGS_process_monitor_interval) {}
RecurrentRunner(const std::string &name, const double interval)

成员函数说明

◆ RunOnce()

void apollo::monitor::ProcessMonitor::RunOnce ( const double  current_time)
overridevirtual

实现了 apollo::monitor::RecurrentRunner.

在文件 process_monitor.cc40 行定义.

40 {
41 // Get running processes.
42 std::vector<std::string> running_processes;
43 for (const auto& cmd_file : cyber::common::Glob("/proc/*/cmdline")) {
44 // Get process command string.
45 std::string cmd_string;
46 if (cyber::common::GetContent(cmd_file, &cmd_string) &&
47 !cmd_string.empty()) {
48 // In /proc/<PID>/cmdline, the parts are separated with \0, which will be
49 // converted back to whitespaces here.
50 std::replace(cmd_string.begin(), cmd_string.end(), '\0', ' ');
51 running_processes.push_back(cmd_string);
52 }
53 }
54
55 auto manager = MonitorManager::Instance();
56 const auto& mode = manager->GetHMIMode();
57
58 // Check HMI modules.
59 auto* hmi_modules = manager->GetStatus()->mutable_hmi_modules();
60 for (const auto& iter : mode.modules()) {
61 const std::string& module_name = iter.first;
62 const auto& config = iter.second.process_monitor_config();
63 UpdateStatus(running_processes, config, &hmi_modules->at(module_name));
64 }
65
66 // Check monitored components.
67 auto* components = manager->GetStatus()->mutable_components();
68 for (const auto& iter : mode.monitored_components()) {
69 const std::string& name = iter.first;
70 if (iter.second.has_process() &&
71 apollo::common::util::ContainsKey(*components, name)) {
72 const auto& config = iter.second.process();
73 auto* status = components->at(name).mutable_process_status();
74 UpdateStatus(running_processes, config, status);
75 }
76 }
77
78 // Check other components.
79 auto* other_components = manager->GetStatus()->mutable_other_components();
80 for (const auto& iter : mode.other_components()) {
81 const std::string& name = iter.first;
82 const auto& config = iter.second;
83 UpdateStatus(running_processes, config, &other_components->at(name));
84 }
85
86 // Check global components.
87 auto* global_components = manager->GetStatus()->mutable_global_components();
88 for (const auto& iter : mode.global_components()) {
89 const std::string& name = iter.first;
90 if (iter.second.has_process() &&
91 apollo::common::util::ContainsKey(*global_components, name)) {
92 const auto& config = iter.second.process();
93 auto* status = global_components->at(name).mutable_process_status();
94 UpdateStatus(running_processes, config, status);
95 }
96 }
97}
std::vector< std::string > Glob(const std::string &pattern)
Expand path pattern to matched paths.
Definition file.cc:212
bool GetContent(const std::string &file_name, std::string *content)
Get file content as string.
Definition file.cc:167

该类的文档由以下文件生成: