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

#include <summary_monitor.h>

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

Public 成员函数

 SummaryMonitor ()
 
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)
 

静态 Public 成员函数

static void EscalateStatus (const ComponentStatus::Status new_status, const std::string &message, ComponentStatus *current_status)
 

额外继承的成员函数

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

详细描述

在文件 summary_monitor.h28 行定义.

构造及析构函数说明

◆ SummaryMonitor()

apollo::monitor::SummaryMonitor::SummaryMonitor ( )

在文件 summary_monitor.cc48 行定义.

49 : RecurrentRunner(FLAGS_summary_monitor_name, 0) {}
RecurrentRunner(const std::string &name, const double interval)

成员函数说明

◆ EscalateStatus()

void apollo::monitor::SummaryMonitor::EscalateStatus ( const ComponentStatus::Status  new_status,
const std::string &  message,
ComponentStatus *  current_status 
)
static

在文件 summary_monitor.cc33 行定义.

35 {
36 // Overwrite priority: FATAL > ERROR > WARN > OK > UNKNOWN.
37 if (new_status > current_status->status()) {
38 current_status->set_status(new_status);
39 if (!message.empty()) {
40 current_status->set_message(message);
41 } else {
42 current_status->clear_message();
43 }
44 }
45}

◆ RunOnce()

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

实现了 apollo::monitor::RecurrentRunner.

在文件 summary_monitor.cc51 行定义.

51 {
52 auto manager = MonitorManager::Instance();
53 auto* status = manager->GetStatus();
54 // Escalate the summary status to the most severe one.
55 for (auto& component : *status->mutable_components()) {
56 auto* summary = component.second.mutable_summary();
57 const auto& process_status = component.second.process_status();
58 EscalateStatus(process_status.status(), process_status.message(), summary);
59 const auto& module_status = component.second.module_status();
60 EscalateStatus(module_status.status(), module_status.message(), summary);
61 const auto& channel_status = component.second.channel_status();
62 EscalateStatus(channel_status.status(), channel_status.message(), summary);
63 const auto& resource_status = component.second.resource_status();
64 EscalateStatus(resource_status.status(), resource_status.message(),
65 summary);
66 const auto& other_status = component.second.other_status();
67 EscalateStatus(other_status.status(), other_status.message(), summary);
68 }
69
70 // For global components
71 for (auto& component : *status->mutable_global_components()) {
72 auto* summary = component.second.mutable_summary();
73 const auto& process_status = component.second.process_status();
74 EscalateStatus(process_status.status(), process_status.message(), summary);
75 const auto& resource_status = component.second.resource_status();
76 EscalateStatus(resource_status.status(), resource_status.message(),
77 summary);
78 }
79
80 // Get fingerprint of current status.
81 // Don't use DebugString() which has known bug on Map field. The string
82 // doesn't change though the value has changed.
83 static std::hash<std::string> hash_fn;
84 std::string proto_bytes;
85 status->SerializeToString(&proto_bytes);
86 const size_t new_fp = hash_fn(proto_bytes);
87
88 if (system_status_fp_ != new_fp ||
89 current_time - last_broadcast_ > FLAGS_system_status_publish_interval) {
90 static auto writer =
91 manager->CreateWriter<SystemStatus>(FLAGS_system_status_topic);
92
93 apollo::common::util::FillHeader("SystemMonitor", status);
94 writer->Write(*status);
95 status->clear_header();
96 system_status_fp_ = new_fp;
97 last_broadcast_ = current_time;
98 }
99}
static void EscalateStatus(const ComponentStatus::Status new_status, const std::string &message, ComponentStatus *current_status)

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