Class RateLimitingIterator<A>
- java.lang.Object
-
- com.jnape.palatable.lambda.internal.iteration.RateLimitingIterator<A>
-
- All Implemented Interfaces:
java.util.Iterator<A>
public final class RateLimitingIterator<A> extends java.lang.Object implements java.util.Iterator<A>
-
-
Field Summary
Fields Modifier and Type Field Description private java.util.Iterator<A>asIteratorprivate java.util.Set<Tuple3<java.lang.Long,java.time.Duration,Fn0<java.time.Instant>>>rateLimitsprivate java.util.Map<Tuple3<java.lang.Long,java.time.Duration,Fn0<java.time.Instant>>,java.util.List<java.time.Instant>>timeSlicesByRateLimit
-
Constructor Summary
Constructors Constructor Description RateLimitingIterator(java.util.Iterator<A> asIterator, java.util.Set<Tuple3<java.lang.Long,java.time.Duration,Fn0<java.time.Instant>>> rateLimits)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description private voidawaitNextTimeSlice()private voidawaitNextTimeSliceForRateLimit(Tuple3<java.lang.Long,java.time.Duration,Fn0<java.time.Instant>> rateLimit)booleanhasNext()Anext()private booleanrateLimitExhaustedInTimeSlice(Tuple3<java.lang.Long,java.time.Duration,Fn0<java.time.Instant>> rateLimit)
-
-
-
Method Detail
-
hasNext
public boolean hasNext()
- Specified by:
hasNextin interfacejava.util.Iterator<A>
-
awaitNextTimeSlice
private void awaitNextTimeSlice()
-
awaitNextTimeSliceForRateLimit
private void awaitNextTimeSliceForRateLimit(Tuple3<java.lang.Long,java.time.Duration,Fn0<java.time.Instant>> rateLimit)
-
-