package com.hqyg.disjob.graph;
import java.util.Set;
import java.util.concurrent.atomic.AtomicInteger;
import com.hqyg.disjob.java.job.DependEJob;
/**
*
* @author Disjob
*
*/
public class JobCondition extends AbstractJobCondition {
public JobCondition(Scheduler schedule,Node<DependEJob> observiable, Set<Node<DependEJob>> v) {
super(schedule,observiable, v);
}
@Override
public boolean isFinished() {
//统计 收到 大于 1 的 node 的数量
int tmpNum = 0 ;
for(AtomicInteger value : messageCountMap.values()){
if(value.get()>=1){
tmpNum++ ;
}
}
return tmpNum >= messageTotal;
}
/**
* 收到 job node 完成的消息数
* @param targetJobNode
*/
public void increMessageCount(Node<DependEJob> targetJobNode){
messageCountMap.get(targetJobNode).getAndIncrement();
}
}