1 package org.onap.ccsdk.apps.controllerblueprints.service.utils;
\r
3 import java.util.concurrent.atomic.AtomicBoolean;
\r
4 import java.util.concurrent.atomic.AtomicInteger;
\r
6 public class CloseCondition {
\r
8 AtomicInteger tasksSubmitted = new AtomicInteger(0);
\r
9 AtomicInteger tasksCompleted = new AtomicInteger(0);
\r
10 AtomicBoolean allTaskssubmitted = new AtomicBoolean(false);
\r
13 * notify all tasks have been subitted, determine of the file channel can be closed
\r
14 * @return true if the asynchronous file stream can be closed
\r
16 public boolean canCloseOnComplete() {
\r
17 allTaskssubmitted.set(true);
\r
18 return tasksCompleted.get() == tasksSubmitted.get();
\r
22 * notify a task has been submitted
\r
24 public void onTaskSubmitted() {
\r
25 tasksSubmitted.incrementAndGet();
\r
29 * notify a task has been completed
\r
30 * @return true if the asynchronous file stream can be closed
\r
32 public boolean onTaskCompleted() {
\r
33 boolean allSubmittedClosed = tasksSubmitted.get() == tasksCompleted.incrementAndGet();
\r
34 return allSubmittedClosed && allTaskssubmitted.get();
\r