@Override
        public Iterator<Host> select(final RequestMessage msg) {
            final List<Host> hosts = new ArrayList<>();

            // a host could be marked as dead in which case we dont need to send messages to it - just skip it for
            // now. it might come back online later
            availableHosts.iterator().forEachRemaining(host -> {
                if (host.isAvailable()) hosts.add(host);
            });

            final int startIndex = index.getAndIncrement();

            if (startIndex > Integer.MAX_VALUE - 10000)
                index.set(0);

            return new Iterator<Host>() {

                private int currentIndex = startIndex;
                private int remainingHosts = hosts.size();

                @Override
                public boolean hasNext() {
                    return remainingHosts > 0;
                }

                @Override
                public Host next() {
                    remainingHosts--;
                    int c = currentIndex++ % hosts.size();
                    if (c < 0)
                        c += hosts.size();
                    return hosts.get(c);
                }
            };
        }
A simple round-robin strategy that simply selects the next host in the {@link Cluster} to send the
{@link RequestMessage} to.
gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/LoadBalancingStrategy.java