public PermitMonitor(Long pipelineId){
super(pipelineId);
existOpposite = (ArbitrateConfigUtils.getOppositePipeline(getPipelineId()) != null);
// 开始同步
channelDataListener = new IZkDataListener() {
public void handleDataChange(String dataPath, Object data) throws Exception {
initChannelStatus((byte[]) data);
}
public void handleDataDeleted(String dataPath) throws Exception {
channelStatus = ChannelStatus.STOP;
permitSem();
}
};
String path = StagePathUtils.getChannel(getPipelineId());
zookeeper.subscribeDataChanges(path, channelDataListener);
mainstemDataListener = new IZkDataListener() {
public void handleDataChange(String dataPath, Object data) throws Exception {
initMainStemStatus((byte[]) data);
}
public void handleDataDeleted(String dataPath) throws Exception {
// mainstem节点挂了后,状态直接修改为taking
mainStemStatus = MainStemEventData.Status.TAKEING;
permitSem();
}
};
path = StagePathUtils.getMainStem(getPipelineId());
zookeeper.subscribeDataChanges(path, mainstemDataListener);
initChannelStatus();
initMainStemStatus();
// syncChannelStatus();
// syncMainStemStatus();
if (existOpposite) {
oppositeMainstemDataListener = new IZkDataListener() {
public void handleDataChange(String dataPath, Object data) throws Exception {
initOppositeMainStemStatus((byte[]) data);
}