in registry/nacos/src/lib.rs [85:124]
fn get_subscribe_service_names(&self, service_name: &NacosServiceName) -> HashSet<String> {
if service_name.is_concrete() {
let mut set = HashSet::new();
let service_subscribe_name = service_name.to_subscriber_str();
let service_subscriber_legacy_name = service_name.to_subscriber_legacy_string();
if service_subscribe_name.eq(&service_subscriber_legacy_name) {
set.insert(service_subscribe_name);
} else {
set.insert(service_subscribe_name);
set.insert(service_subscriber_legacy_name);
}
set
} else {
let list_view = self.nacos_naming_service.get_service_list(
1,
i32::MAX,
Some(
service_name
.get_group_with_default(DEFAULT_GROUP)
.to_string(),
),
);
if let Err(e) = list_view {
error!("list service instances occur an error: {:?}", e);
return HashSet::default();
}
let list_view = list_view.unwrap();
let set: HashSet<String> = list_view
.0
.into_iter()
.filter(|service_name| service_name.split(SERVICE_NAME_SEPARATOR).count() == 4)
.map(|service_name| NacosServiceName::from_service_name_str(&service_name))
.filter(|other_service_name| service_name.is_compatible(other_service_name))
.map(|service_name| service_name.to_subscriber_str())
.collect();
set
}
}