48 std::vector<std::string> *channels) {
50 apollo::cyber::service_discovery::TopologyManager::Instance()
52 std::vector<apollo::cyber::proto::RoleAttributes> role_attr_vec;
53 channelManager->GetWriters(&role_attr_vec);
54 std::vector<std::string> records;
55 std::vector<std::string> other_record_node_name;
56 auto *record_player_factory = RecordPlayerFactory::Instance();
57 record_player_factory->GetAllRecords(&records);
58 const std::string current_record = record_player_factory->GetCurrentRecord();
59 for (
auto iter = records.begin(); iter != records.end(); iter++) {
60 if (current_record.empty() || *iter != current_record) {
61 std::string other_node_name =
"record_player_factory_" + *iter;
62 other_record_node_name.push_back(other_node_name);
65 std::vector<std::string> tmp_channels;
66 for (
auto &role_attr : role_attr_vec) {
67 std::string messageType;
68 std::string node_name;
69 messageType = role_attr.message_type();
70 node_name = role_attr.node_name();
72 if (current_record.empty() ||
73 std::find(other_record_node_name.begin(),
74 other_record_node_name.end(),
75 node_name) == other_record_node_name.end()) {
76 tmp_channels.push_back(role_attr.channel_name());
80 std::set<std::string> s(tmp_channels.begin(), tmp_channels.end());
81 channels->assign(tmp_channels.begin(), tmp_channels.end());