in dubbo-remoting-extensions/dubbo-remoting-etcd3/src/main/java/org/apache/dubbo/remoting/etcd/jetcd/JEtcdClient.java [232:271]
public void onNext(WatchResponse response) {
// prevents grpc on sending watchResponse to a closed watch client.
if (!isConnected()) {
return;
}
watchId = response.getWatchId();
if (listener != null) {
int modified = 0;
String service = null;
Iterator<Event> iterator = response.getEventsList().iterator();
while (iterator.hasNext()) {
Event event = iterator.next();
switch (event.getType()) {
case PUT: {
if (((service = find(event)) != null)
&& safeUpdate(service, true)) {
modified++;
}
break;
}
case DELETE: {
if (((service = find(event)) != null)
&& safeUpdate(service, false)) {
modified++;
}
break;
}
default:
break;
}
}
if (modified > 0) {
notifyExecutor.execute(() -> listener.childChanged(path, new ArrayList<>(urls)));
}
}
}