package com.neverwinterdp.registry.election;
import com.neverwinterdp.registry.Node;
import com.neverwinterdp.registry.Registry;
import com.neverwinterdp.registry.event.NodeEvent;
import com.neverwinterdp.registry.event.NodeWatcher;
abstract public class LeaderElectionNodeWatcher<T> extends NodeWatcher {
Registry registry;
Class<T> descriptorType;
public LeaderElectionNodeWatcher(Registry registry,Class<T> descriptorType) {
this.registry = registry ;
this.descriptorType = descriptorType;
}
@Override
public void onEvent(NodeEvent event) {
try {
String path = event.getPath();
if(event.getType() == NodeEvent.Type.MODIFY) {
Node node = registry.getRef(path);
T data = node.getDataAs(descriptorType) ;
onElected(event, data);
}
} catch(Exception ex) {
ex.printStackTrace();
}
}
abstract public void onElected(NodeEvent event, T data) ;
}