29 const std::string& mode, std::unique_ptr<FuelMonitor>&& fuel_monitor) {
30 const auto& class_name = fuel_monitor->GetClassName();
31 if (monitors_.find(mode) != monitors_.end() &&
32 monitors_[mode].find(class_name) != monitors_[mode].end()) {
33 AWARN << class_name <<
" for mode: " << mode <<
" has been exist!";
35 monitors_[mode].emplace(class_name, std::move(fuel_monitor));
36 AINFO <<
"Registered " << class_name <<
" for mode: " << mode;
42 if (monitors_.find(mode) != monitors_.end()) {
44 if (current_monitors_ !=
nullptr && current_monitors_ != new_monitors) {
45 for (
const auto& monitor : *current_monitors_) {
46 monitor.second->Stop();
50 boost::unique_lock<boost::shared_mutex> writer_lock(mutex_);
51 current_monitors_ = new_monitors;
53 for (
const auto& monitor : *current_monitors_) {
54 monitor.second->Start();
56 }
else if (current_monitors_ !=
nullptr) {
57 for (
const auto& monitor : *current_monitors_) {
58 monitor.second->Stop();