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