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>
asIterator
private java.util.Set<Tuple3<java.lang.Long,java.time.Duration,Fn0<java.time.Instant>>>
rateLimits
private 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 void
awaitNextTimeSlice()
private void
awaitNextTimeSliceForRateLimit(Tuple3<java.lang.Long,java.time.Duration,Fn0<java.time.Instant>> rateLimit)
boolean
hasNext()
A
next()
private boolean
rateLimitExhaustedInTimeSlice(Tuple3<java.lang.Long,java.time.Duration,Fn0<java.time.Instant>> rateLimit)
-
-
-
Method Detail
-
hasNext
public boolean hasNext()
- Specified by:
hasNext
in interfacejava.util.Iterator<A>
-
awaitNextTimeSlice
private void awaitNextTimeSlice()
-
awaitNextTimeSliceForRateLimit
private void awaitNextTimeSliceForRateLimit(Tuple3<java.lang.Long,java.time.Duration,Fn0<java.time.Instant>> rateLimit)
-
-