
net.optionfactory.journalwebd.client.BlockingQueueIterator Maven / Gradle / Ivy
The newest version!
package net.optionfactory.journalwebd.client;
import java.util.Spliterator;
import java.util.concurrent.BlockingQueue;
import java.util.function.Consumer;
public class BlockingQueueIterator implements Spliterator {
private final BlockingQueue> q;
public BlockingQueueIterator(BlockingQueue> q) {
this.q = q;
}
@Override
public boolean tryAdvance(Consumer super T> action) {
try {
final var got = q.take();
if (got.done()) {
return false;
}
if (got.ex() != null) {
throw got.ex();
}
action.accept(got.value());
return true;
} catch (InterruptedException ex) {
throw new JournalClientException(ex);
}
}
@Override
public Spliterator trySplit() {
return null;
}
@Override
public long estimateSize() {
return Long.MAX_VALUE;
}
@Override
public int characteristics() {
return Spliterator.ORDERED;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy