Apollo 10.0
自动驾驶开放平台
apollo::cyber::PyNodeUtils类 参考

#include <py_cyber.h>

apollo::cyber::PyNodeUtils 的协作图:

静态 Public 成员函数

static std::vector< std::string > get_active_nodes (uint8_t sleep_s=2)
 
static std::string get_node_attr (const std::string &node_name, uint8_t sleep_s=2)
 
static std::vector< std::string > get_readersofnode (const std::string &node_name, uint8_t sleep_s=2)
 
static std::vector< std::string > get_writersofnode (const std::string &node_name, uint8_t sleep_s=2)
 

详细描述

在文件 py_cyber.h426 行定义.

成员函数说明

◆ get_active_nodes()

static std::vector< std::string > apollo::cyber::PyNodeUtils::get_active_nodes ( uint8_t  sleep_s = 2)
inlinestatic

在文件 py_cyber.h428 行定义.

428 {
429 auto topology = service_discovery::TopologyManager::Instance();
430 sleep(sleep_s);
431 std::vector<std::string> node_names;
432 std::vector<RoleAttributes> nodes;
433 topology->node_manager()->GetNodes(&nodes);
434 if (nodes.empty()) {
435 AERROR << "no node found.";
436 return node_names;
437 }
438
439 std::sort(nodes.begin(), nodes.end(),
440 [](const RoleAttributes& na, const RoleAttributes& nb) -> bool {
441 return na.node_name().compare(nb.node_name()) <= 0;
442 });
443 for (auto& node : nodes) {
444 node_names.emplace_back(node.node_name());
445 }
446 return node_names;
447 }
#define AERROR
Definition log.h:44

◆ get_node_attr()

static std::string apollo::cyber::PyNodeUtils::get_node_attr ( const std::string &  node_name,
uint8_t  sleep_s = 2 
)
inlinestatic

在文件 py_cyber.h449 行定义.

450 {
451 auto topology = service_discovery::TopologyManager::Instance();
452 sleep(sleep_s);
453
454 if (!topology->node_manager()->HasNode(node_name)) {
455 AERROR << "no node named: " << node_name;
456 return "";
457 }
458
459 std::vector<RoleAttributes> nodes;
460 topology->node_manager()->GetNodes(&nodes);
461 std::string msgdata;
462 for (auto& node_attr : nodes) {
463 if (node_attr.node_name() == node_name) {
464 node_attr.SerializeToString(&msgdata);
465 return msgdata;
466 }
467 }
468 return "";
469 }

◆ get_readersofnode()

static std::vector< std::string > apollo::cyber::PyNodeUtils::get_readersofnode ( const std::string &  node_name,
uint8_t  sleep_s = 2 
)
inlinestatic

在文件 py_cyber.h471 行定义.

472 {
473 std::vector<std::string> reader_channels;
474 auto topology = service_discovery::TopologyManager::Instance();
475 sleep(sleep_s);
476 if (!topology->node_manager()->HasNode(node_name)) {
477 AERROR << "no node named: " << node_name;
478 return reader_channels;
479 }
480
481 std::vector<RoleAttributes> readers;
482 auto channel_mgr = topology->channel_manager();
483 channel_mgr->GetReadersOfNode(node_name, &readers);
484 for (auto& reader : readers) {
485 if (reader.channel_name() == "param_event") {
486 continue;
487 }
488 reader_channels.emplace_back(reader.channel_name());
489 }
490 return reader_channels;
491 }

◆ get_writersofnode()

static std::vector< std::string > apollo::cyber::PyNodeUtils::get_writersofnode ( const std::string &  node_name,
uint8_t  sleep_s = 2 
)
inlinestatic

在文件 py_cyber.h493 行定义.

494 {
495 std::vector<std::string> writer_channels;
496 auto topology = service_discovery::TopologyManager::Instance();
497 sleep(sleep_s);
498 if (!topology->node_manager()->HasNode(node_name)) {
499 AERROR << "no node named: " << node_name;
500 return writer_channels;
501 }
502
503 std::vector<RoleAttributes> writers;
504 auto channel_mgr = topology->channel_manager();
505 channel_mgr->GetWritersOfNode(node_name, &writers);
506 for (auto& writer : writers) {
507 if (writer.channel_name() == "param_event") {
508 continue;
509 }
510 writer_channels.emplace_back(writer.channel_name());
511 }
512 return writer_channels;
513 }

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