d7b4aa9382d9f95bd3595aa47f329926e0987ad8
[ccsdk/cds.git] /
1 package org.onap.ccsdk.apps.controllerblueprints.service.utils;\r
2 \r
3 import java.util.concurrent.atomic.AtomicBoolean;\r
4 import java.util.concurrent.atomic.AtomicInteger;\r
5 \r
6 public class CloseCondition {\r
7 \r
8     AtomicInteger tasksSubmitted = new AtomicInteger(0);\r
9     AtomicInteger tasksCompleted = new AtomicInteger(0);\r
10     AtomicBoolean allTaskssubmitted = new AtomicBoolean(false);\r
11 \r
12     /**\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
15      */\r
16     public boolean canCloseOnComplete() {\r
17         allTaskssubmitted.set(true);\r
18         return tasksCompleted.get() == tasksSubmitted.get();\r
19     }\r
20 \r
21     /**\r
22      * notify a task has been submitted\r
23      */\r
24     public void onTaskSubmitted() {\r
25         tasksSubmitted.incrementAndGet();\r
26     }\r
27 \r
28     /**\r
29      * notify a task has been completed\r
30      * @return true if the asynchronous file stream can be closed\r
31      */\r
32     public boolean onTaskCompleted() {\r
33         boolean allSubmittedClosed = tasksSubmitted.get() == tasksCompleted.incrementAndGet();\r
34         return allSubmittedClosed && allTaskssubmitted.get();\r
35     }\r
36 }\r