Jagger
 All Classes Namespaces Files Functions Variables 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 >.

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