- Timestamp:
- 07/16/13 23:31:35 (11 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
java/main/src/main/java/com/framsticks/util/dispatching/JoinableCollection.java
r101 r102 21 21 protected final Set<T> joinables = new HashSet<T>(); 22 22 23 protected boolean finishIfOne; 23 public static enum FinishPolicy { 24 Never, 25 OnFirst, 26 OnAll 27 }; 28 29 protected final FinishPolicy finishPolicy; 24 30 25 31 protected String observableName; 26 32 27 33 public JoinableCollection() { 28 this(false); 29 } 30 31 public JoinableCollection(boolean finishIfOne) { 32 this.finishIfOne = finishIfOne; 34 this(FinishPolicy.OnAll); 35 } 36 37 38 /** 39 * @param finishPolicy 40 */ 41 public JoinableCollection(FinishPolicy finishPolicy) { 42 this.finishPolicy = finishPolicy; 33 43 } 34 44 … … 95 105 96 106 protected JoinableState getNextState() { 97 if ( joinables.isEmpty()) {107 if ((finishPolicy == FinishPolicy.Never && state == JoinableState.RUNNING) || joinables.isEmpty()) { 98 108 return state; 99 109 } 100 JoinableState result = finishIfOne ? JoinableState.INITILIAZED : JoinableState.JOINED; 110 boolean oneIsEnough = (finishPolicy == FinishPolicy.OnFirst); 111 JoinableState result = oneIsEnough ? JoinableState.INITILIAZED : JoinableState.JOINED; 101 112 for (Joinable j : joinables) { 102 113 JoinableState s = j.getState(); 103 if ( finishIfOne) {114 if (oneIsEnough) { 104 115 if (s.ordinal() > result.ordinal()) { 105 116 result = s;
Note: See TracChangeset
for help on using the changeset viewer.