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

Returns an iterator over pairs.

Author
Grid Dynamics
Details:

Returns an iterator over pairs, which were created by "One by one" algorithm

Returns
iterator over pairs

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

Definition at line 58 of file OneByOneLoadBalancer.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  boolean exceeded = endpointSupplier.exceeded();
71 
72  E endpoint = endpointSupplier.pop();
73  Q query = exceeded ? querySupplier.pop() : querySupplier.peek();
74 
75  return Pair.of(query, endpoint);
76 
77  }
78 
79  @Override
80  public void remove() {
81  throw new UnsupportedOperationException("Read only iterator");
82  }
83 
84  @Override
85  public String toString() {
86  return "OneByOneLoadBalancer iterator";
87  }
88 
89  };
90  }