fn unsubscribe()

in registry/nacos/src/lib.rs [251:301]


    fn unsubscribe(
        &self,
        url: Url,
        listener: RegistryNotifyListener,
    ) -> Result<(), dubbo::StdError> {
        let service_name = NacosServiceName::new(&url);
        let url_str = url.to_url();
        info!("unsubscribe: {}", &url_str);

        let nacos_listener: Arc<NotifyListenerWrapper> = {
            let listeners = self.listeners.lock();
            if let Err(e) = listeners {
                error!("unsubscribe service failed: {:?}", e);
                return Err(anyhow!("unsubscribe service failed: {:?}", e).into());
            }

            let mut listeners = listeners.unwrap();
            let listener_set = listeners.get_mut(url_str.as_str());
            if listener_set.is_none() {
                return Ok(());
            }

            let listener_set = listener_set.unwrap();

            let listener = Arc::new(NotifyListenerWrapper(listener));
            let listener = listener_set.take(&listener);
            if listener.is_none() {
                return Ok(());
            }

            listener.unwrap()
        };

        let ret = self.nacos_naming_service.unsubscribe(
            service_name.to_subscriber_str(),
            Some(
                service_name
                    .get_group_with_default(DEFAULT_GROUP)
                    .to_string(),
            ),
            Vec::new(),
            nacos_listener,
        );

        if let Err(e) = ret {
            error!("unsubscribe service failed: {:?}", e);
            return Err(anyhow!("unsubscribe service failed: {:?}", e).into());
        }

        Ok(())
    }