X-Git-Url: http://git.argeo.org/?a=blobdiff_plain;f=org.argeo.slc.runtime%2Fsrc%2Forg%2Fargeo%2Fslc%2Fruntime%2FProcessThreadGroup.java;fp=org.argeo.slc.runtime%2Fsrc%2Forg%2Fargeo%2Fslc%2Fruntime%2FProcessThreadGroup.java;h=79f38d77b48c686480d32b9695ba578be5771eba;hb=6fc94d69efe089414ac9e63bde3efab1cbf7b7ca;hp=0000000000000000000000000000000000000000;hpb=b36c62642bd0db11b3133b369cc026fd4b7a1ec6;p=gpl%2Fargeo-slc.git diff --git a/org.argeo.slc.runtime/src/org/argeo/slc/runtime/ProcessThreadGroup.java b/org.argeo.slc.runtime/src/org/argeo/slc/runtime/ProcessThreadGroup.java new file mode 100644 index 000000000..79f38d77b --- /dev/null +++ b/org.argeo.slc.runtime/src/org/argeo/slc/runtime/ProcessThreadGroup.java @@ -0,0 +1,53 @@ +package org.argeo.slc.runtime; + +import java.util.concurrent.ArrayBlockingQueue; +import java.util.concurrent.BlockingQueue; + +import org.argeo.slc.execution.ExecutionProcess; +import org.argeo.slc.execution.ExecutionStep; + +/** The thread group attached to a given {@link SlcExecution}. */ +public class ProcessThreadGroup extends ThreadGroup { +// private final Authentication authentication; + private final static Integer STEPS_BUFFER_CAPACITY = 5000; + + private BlockingQueue steps = new ArrayBlockingQueue( + STEPS_BUFFER_CAPACITY); + + private Boolean hadAnError = false; + + public ProcessThreadGroup(ExecutionProcess executionProcess) { + super("SLC Process #" + executionProcess.getUuid() + " thread group"); +// this.authentication = SecurityContextHolder.getContext() +// .getAuthentication(); + } + +// public Authentication getAuthentication() { +// return authentication; +// } + + public void dispatchAddStep(ExecutionStep step) { + // ExecutionProcess slcProcess = processThread.getProcess(); + // List steps = new ArrayList(); + // steps.add(step); + // TODO clarify why we don't dispatch steps, must be a reason + // dispatchAddSteps(steps); + // slcProcess.addSteps(steps); + if (step.getType().equals(ExecutionStep.ERROR)) + hadAnError = true; + this.steps.add(step); + } + + // public void dispatchAddSteps(List steps) { + // ExecutionProcess slcProcess = processThread.getProcess(); + // executionModulesManager.dispatchAddSteps(slcProcess, steps); + // } + + public BlockingQueue getSteps() { + return steps; + } + + public Boolean hadAnError() { + return hadAnError; + } +}