From d217384c8b0e830f460dea4250ab45ef19b14c11 Mon Sep 17 00:00:00 2001 From: sige Date: Wed, 6 Mar 2024 11:47:26 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BB=BB=E5=8A=A1=E6=94=AF=E6=8C=81=E9=80=9A?= =?UTF-8?q?=E8=BF=87=E5=90=8D=E7=A7=B0=E7=AD=89=E5=BE=85=20action=20?= =?UTF-8?q?=E5=AE=8C=E6=88=90=EF=BC=8C=E4=B8=8D=E9=9C=80=E8=A6=81=E6=89=8B?= =?UTF-8?q?=E5=8A=A8=E5=88=9B=E5=BB=BAlock?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../my/graphiteDigesterBg/diframe/DiTaskBase.java | 28 ++++++++++++++++++++++ 1 file changed, 28 insertions(+) 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); + } }