44 {
45 auto manager = MonitorManager::Instance();
46 auto* component = apollo::common::util::FindOrNull(
47 *manager->GetStatus()->mutable_components(),
48 FLAGS_localization_component_name);
49 if (component == nullptr) {
50
51 return;
52 }
53
54 static auto reader =
55 manager->CreateReader<LocalizationStatus>(FLAGS_localization_msf_status);
56 reader->Observe();
57 const auto status = reader->GetLatestObserved();
58
59 ComponentStatus* component_status = component->mutable_other_status();
60 component_status->clear_status();
61 if (status == nullptr) {
63 "No LocalizationStatus received",
64 component_status);
65 return;
66 }
67
68
69
70 switch (status->fusion_status()) {
71 case MeasureState::OK:
73 break;
74 case MeasureState::WARNNING:
76 ComponentStatus::WARN,
77 absl::StrCat("WARNNING: ", status->state_message()),
78 component_status);
79 break;
80 case MeasureState::ERROR:
82 ComponentStatus::WARN,
83 absl::StrCat("ERROR: ", status->state_message()), component_status);
84 break;
85 case MeasureState::CRITICAL_ERROR:
87 ComponentStatus::ERROR,
88 absl::StrCat("CRITICAL_ERROR: ", status->state_message()),
89 component_status);
90 break;
91 case MeasureState::FATAL_ERROR:
93 ComponentStatus::FATAL,
94 absl::StrCat("FATAL_ERROR: ", status->state_message()),
95 component_status);
96 break;
97 default:
98 AFATAL <<
"Unknown fusion_status: " << status->fusion_status();
99 break;
100 }
101}
static void EscalateStatus(const ComponentStatus::Status new_status, const std::string &message, ComponentStatus *current_status)