/** * Copyright 2011-2014 the original author or authors. */ package com.jetdrone.vertx.yoke.util; import org.jetbrains.annotations.NotNull; import io.vertx.core.Handler; import java.util.Iterator; /** # AsyncIterator */ public abstract class AsyncIterator<T> implements Handler<T> { private final Iterator<T> iterator; private boolean end = false; public AsyncIterator(@NotNull Iterable<T> iterable) { iterator = iterable.iterator(); next(); } public AsyncIterator(@NotNull Iterator<T> iterator) { this.iterator = iterator; next(); } public final boolean hasNext() { return !end; } public final void next() { if (iterator.hasNext()) { handle(iterator.next()); } else { end = true; handle(null); } } public final void done() { end = true; handle(null); } public final void remove() { iterator.remove(); } }