in registry/zookeeper/src/lib.rs [327:359]
fn handle(&self, event: WatchedEvent) {
if let (WatchedEventType::NodeChildrenChanged, Some(path)) = (event.event_type, event.path)
{
let event_path = path.clone();
let dirs = self
.zk_client
.get_children(&event_path, false)
.expect("msg");
let result: Vec<Url> = dirs
.iter()
.map(|node_key| {
let provider_url: Url = node_key.as_str().into();
provider_url
})
.collect();
let res = self.zk_client.get_children_w(
&path,
ServiceInstancesChangedListener {
zk_client: Arc::clone(&self.zk_client),
path: path.clone(),
service_name: self.service_name.clone(),
listener: Arc::clone(&self.listener),
},
);
info!("notify {}->{:?}", self.service_name, result);
self.listener.notify(ServiceEvent {
key: self.service_name.clone(),
action: String::from("ADD"),
service: result,
});
}
}