package netflix.ocelli.util;
import java.util.List;
import java.util.concurrent.CopyOnWriteArrayList;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.TimeUnit;
import rx.functions.Action1;
public class CountDownAction<T> implements Action1<T> {
private CountDownLatch latch;
private CopyOnWriteArrayList<T> list = new CopyOnWriteArrayList<T>();
public CountDownAction(int count) {
latch = new CountDownLatch(count);
}
@Override
public void call(T t1) {
list.add(t1);
latch.countDown();
}
public void await(long timeout, TimeUnit units) throws Exception {
latch.await(timeout, units);
}
public List<T> get() {
return list;
}
public void reset(int count) {
latch = new CountDownLatch(count);
list = new CopyOnWriteArrayList<T>();
}
}