diff --git a/src/src/main/java/com/my/graphiteDigesterBg/diframe/DiTaskBase.java b/src/src/main/java/com/my/graphiteDigesterBg/diframe/DiTaskBase.java index e54a6f7..0591d35 100644 --- a/src/src/main/java/com/my/graphiteDigesterBg/diframe/DiTaskBase.java +++ b/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 org.slf4j.Logger; import org.slf4j.LoggerFactory; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; import java.util.Map; abstract public class DiTaskBase implements DiTask { // logger @@ -19,6 +23,8 @@ abstract public class DiTaskBase implements DiTask { private DiMdbUser user; // execution private final DiMdbTaskExecution execution; + // action results + private final Map actions = new HashMap<>(); // constructor public DiTaskBase() { @@ -143,4 +149,26 @@ abstract public class DiTaskBase implements DiTask { DiActuator actuator = this.getDevice().getActuators().get(actuatorKey); 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); + } }