package com.neverwinterdp.registry;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.neverwinterdp.registry.event.NodeEvent;
import com.neverwinterdp.registry.event.NodeWatcher;
public class RegistryNodeEventListener {
protected Logger logger = LoggerFactory.getLogger(RegistryNodeEventListener.class) ;
protected Registry registry ;
public RegistryNodeEventListener(Registry registry) {
this.registry = registry;
}
public void close() {
registry = null ;
}
public boolean isClosed() {
return registry == null || !registry.isConnect();
}
protected void watch(final String listenPath, final NodeWatcher nodeWatcher) throws RegistryException {
if(registry.exists(listenPath)) {
registry.watchModify(listenPath, nodeWatcher);
} else {
registry.watchExists(listenPath, new NodeWatcher() {
@Override
public void onEvent(NodeEvent event) {
if(event.getType() == NodeEvent.Type.CREATE) {
try {
registry.watchModify(listenPath, nodeWatcher);
nodeWatcher.onEvent(event);
} catch (RegistryException e) {
logger.error("Cannot register the leader node watcher", e);
}
}
}
});
}
}
}