Apollo 11.0
自动驾驶开放平台
apollo::cyber::plugin_manager::PluginDescription类 参考

#include <plugin_description.h>

apollo::cyber::plugin_manager::PluginDescription 的协作图:

Public 成员函数

 PluginDescription ()
 
 PluginDescription (const std::string &name)
 
 PluginDescription (const std::string &name, const std::string &description_index_path, const std::string &description_path, const std::string &actual_description_path, const std::string &library_path, const std::string &actual_library_path)
 
bool ParseFromIndexFile (const std::string &file_path)
 parse plugin description metadata from plugin index file
 
bool ParseFromDescriptionFile (const std::string &file_path)
 parse plugin description metadata from plugin description file
 

Public 属性

std::string name_
 
std::string description_index_path_
 
std::string description_path_
 
std::string actual_description_path_
 
std::string library_path_
 
std::string actual_library_path_
 
std::map< std::string, std::string > class_name_base_class_name_map_
 

详细描述

在文件 plugin_description.h 第 25 行定义.

构造及析构函数说明

◆ PluginDescription() [1/3]

apollo::cyber::plugin_manager::PluginDescription::PluginDescription ( )

在文件 plugin_description.cc 第 34 行定义.

34{}

◆ PluginDescription() [2/3]

apollo::cyber::plugin_manager::PluginDescription::PluginDescription ( const std::string &  name)
explicit

在文件 plugin_description.cc 第 36 行定义.

◆ PluginDescription() [3/3]

apollo::cyber::plugin_manager::PluginDescription::PluginDescription ( const std::string &  name,
const std::string &  description_index_path,
const std::string &  description_path,
const std::string &  actual_description_path,
const std::string &  library_path,
const std::string &  actual_library_path 
)

成员函数说明

◆ ParseFromDescriptionFile()

bool apollo::cyber::plugin_manager::PluginDescription::ParseFromDescriptionFile ( const std::string &  file_path)

parse plugin description metadata from plugin description file

参数
file_pathplugin description file path
返回
true if parse success

在文件 plugin_description.cc 第 63 行定义.

63 {
64 if (this->description_path_.empty()) {
65 this->description_path_ = file_path;
66 }
67
69 this->description_path_, "APOLLO_PLUGIN_DESCRIPTION_PATH",
71 AWARN << "plugin index[" << file_path << "] name[" << this->name_
72 << "] invalid, description[" << this->description_path_
73 << "] file not found";
74 return false;
75 }
76
77 tinyxml2::XMLDocument doc;
78 if (doc.LoadFile(this->actual_description_path_.c_str()) !=
79 tinyxml2::XML_SUCCESS) {
80 AWARN << "plugin description[" << file_path << "] name[" << this->name_
81 << "] invalid, parse description file failed";
82 return false;
83 }
84 const tinyxml2::XMLElement* root = doc.RootElement();
85 this->library_path_ = root->Attribute("path");
86
87 std::string plugin_name =
88 std::regex_replace(this->library_path_, std::regex("/"), "__");
89 if (this->name_.empty()) {
90 this->name_ = plugin_name;
91 }
92
93 // process class name and base class name from description file, this will be
94 // used to build index fo lazy load
95 for (const tinyxml2::XMLElement* class_element =
96 root->FirstChildElement("class");
97 class_element != nullptr;
98 class_element = class_element->NextSiblingElement("class")) {
99 std::string class_name = class_element->Attribute("type");
100 std::string base_class_name = class_element->Attribute("base_class");
101
102 if (this->class_name_base_class_name_map_.find(class_name) !=
104 AWARN << "plugin description[" << file_path << "] name[" << this->name_
105 << "] invalid, class name[" << class_name << "] duplicated";
106 continue;
107 }
108
109 if (class_name.empty() || base_class_name.empty()) {
110 AWARN << "plugin description[" << file_path << "] name[" << this->name_
111 << "] invalid, class name[" << class_name << "] base class name["
112 << base_class_name << "] invalid";
113 continue;
114 }
115 this->class_name_base_class_name_map_[class_name] = base_class_name;
116 }
117
119 "APOLLO_PLUGIN_LIB_PATH",
120 &this->actual_library_path_)) {
121 AWARN << "plugin description[" << file_path << "] name[" << this->name_
122 << "] invalid, library[" << this->library_path_ << "] file not found";
123 return false;
124 }
125
126 return true;
127}
std::map< std::string, std::string > class_name_base_class_name_map_
#define AWARN
Definition log.h:43
bool GetFilePathWithEnv(const std::string &path, const std::string &env_var, std::string *file_path)
get file path, judgement priority:
Definition file.cc:422

◆ ParseFromIndexFile()

bool apollo::cyber::plugin_manager::PluginDescription::ParseFromIndexFile ( const std::string &  file_path)

parse plugin description metadata from plugin index file

参数
file_pathplugin index file path
返回
true if parse success

在文件 plugin_description.cc 第 51 行定义.

51 {
52 this->description_index_path_ = file_path;
54
56 AWARN << "plugin index[" << file_path << "] name[" << this->name_
57 << "] invalid, read index file failed";
58 return false;
59 }
61}
bool ParseFromDescriptionFile(const std::string &file_path)
parse plugin description metadata from plugin description file
std::string GetFileName(const std::string &path, const bool remove_extension)
Definition file.cc:401
bool GetContent(const std::string &file_name, std::string *content)
Get file content as string.
Definition file.cc:167

类成员变量说明

◆ actual_description_path_

std::string apollo::cyber::plugin_manager::PluginDescription::actual_description_path_

在文件 plugin_description.h 第 30 行定义.

◆ actual_library_path_

std::string apollo::cyber::plugin_manager::PluginDescription::actual_library_path_

在文件 plugin_description.h 第 32 行定义.

◆ class_name_base_class_name_map_

std::map<std::string, std::string> apollo::cyber::plugin_manager::PluginDescription::class_name_base_class_name_map_

在文件 plugin_description.h 第 34 行定义.

◆ description_index_path_

std::string apollo::cyber::plugin_manager::PluginDescription::description_index_path_

在文件 plugin_description.h 第 28 行定义.

◆ description_path_

std::string apollo::cyber::plugin_manager::PluginDescription::description_path_

在文件 plugin_description.h 第 29 行定义.

◆ library_path_

std::string apollo::cyber::plugin_manager::PluginDescription::library_path_

在文件 plugin_description.h 第 31 行定义.

◆ name_

std::string apollo::cyber::plugin_manager::PluginDescription::name_

在文件 plugin_description.h 第 27 行定义.


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