Browse Source

任务支持通过名称等待 action 完成,不需要手动创建lock

master
sige 1 year ago
parent
commit
d217384c8b
  1. 28
      src/src/main/java/com/my/graphiteDigesterBg/diframe/DiTaskBase.java

28
src/src/main/java/com/my/graphiteDigesterBg/diframe/DiTaskBase.java

@ -3,6 +3,10 @@ import com.my.graphiteDigesterBg.diframe.model.DiMdbTaskExecution;
import com.my.graphiteDigesterBg.diframe.model.DiMdbUser; import com.my.graphiteDigesterBg.diframe.model.DiMdbUser;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map; import java.util.Map;
abstract public class DiTaskBase implements DiTask { abstract public class DiTaskBase implements DiTask {
// logger // logger
@ -19,6 +23,8 @@ abstract public class DiTaskBase implements DiTask {
private DiMdbUser user; private DiMdbUser user;
// execution // execution
private final DiMdbTaskExecution execution; private final DiMdbTaskExecution execution;
// action results
private final Map<String, DiTaskAction> actions = new HashMap<>();
// constructor // constructor
public DiTaskBase() { public DiTaskBase() {
@ -143,4 +149,26 @@ abstract public class DiTaskBase implements DiTask {
DiActuator actuator = this.getDevice().getActuators().get(actuatorKey); DiActuator actuator = this.getDevice().getActuators().get(actuatorKey);
return clazz.cast(actuator); return clazz.cast(actuator);
} }
// wait for action
public DiTaskAction waitAction(String name) {
var action = new DiTaskAction();
action.name = name;
this.actions.put(name, action);
var waitAction = this.actions.get(name);
synchronized (waitAction) {
try {
waitAction.wait();
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
}
return waitAction;
}
// get action
public DiTaskAction getAction(String name) {
return this.actions.get(name);
}
} }
Loading…
Cancel
Save