Jagger
 All Classes Namespaces Files Functions Variables Enumerator Groups Pages
Iterator<Pair<Q, E> > com.griddynamics.jagger.invoker.RoundRobinLoadBalancer< Q, E >.provide ( )

Returns an iterator over pairs.

Author
Mairbek Khadikov
Details:

Returns an iterator over pairs, which were created by Round-Robin algorithm

Returns
iterator over pairs

Implements com.griddynamics.jagger.invoker.LoadBalancer< Q, E >.

Definition at line 58 of file RoundRobinLoadBalancer.java.

58  {
59  final CircularSupplier<Q> querySupplier = CircularSupplier.create(queryProvider);
60  final CircularSupplier<E> endpointSupplier = CircularSupplier.create(endpointProvider);
61 
62  return new Iterator<Pair<Q, E>>() {
63  @Override
64  public boolean hasNext() {
65  return true;
66  }
67 
68  @Override
69  public Pair<Q, E> next() {
70  E endpoint = endpointSupplier.pop();
71  Q query = querySupplier.pop();
72  return Pair.of(query, endpoint);
73  }
74 
75  @Override
76  public void remove() {
77  throw new UnsupportedOperationException("Read only iterator");
78  }
79 
80  @Override
81  public String toString() {
82  return "RoundRobinLoadBalancer iterator";
83  }
84  };
85  }