fn get_subscribe_service_names()

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
        }
    }