in dubbo/src/cluster/directory.rs [92:122]
fn list(&self, invocation: Arc<RpcInvocation>) -> Vec<BoxInvoker> {
let service_name = invocation.get_target_service_unique_name();
let url = Url::from_url(&format!(
"triple://{}:{}/{}",
"127.0.0.1", "8888", service_name
))
.unwrap();
self.registry
.subscribe(
url,
Arc::new(MemoryNotifyListener {
service_instances: Arc::clone(&self.service_instances),
}),
)
.expect("subscribe");
let map = self
.service_instances
.read()
.expect("service_instances.read");
let binding = Vec::new();
let url_vec = map.get(&service_name).unwrap_or(&binding);
// url_vec.to_vec()
let mut invokers: Vec<BoxInvoker> = vec![];
for item in url_vec.iter() {
invokers.push(Box::new(TripleInvoker::new(item.clone())));
}
invokers
}