package org.infinispan.client.hotrod.impl.iteration; import java.net.InetSocketAddress; import java.net.SocketAddress; import java.util.Collection; import java.util.Set; import org.infinispan.client.hotrod.impl.transport.tcp.FailoverRequestBalancingStrategy; import org.infinispan.client.hotrod.impl.transport.tcp.RoundRobinBalancingStrategy; public class PreferredServerBalancingStrategy implements FailoverRequestBalancingStrategy { private final InetSocketAddress preferredServer; private final RoundRobinBalancingStrategy roundRobinBalancingStrategy = new RoundRobinBalancingStrategy(); public PreferredServerBalancingStrategy(InetSocketAddress preferredServer) { this.preferredServer = preferredServer; } @Override public void setServers(Collection<SocketAddress> servers) { roundRobinBalancingStrategy.setServers(servers); } @Override public SocketAddress nextServer(Set<SocketAddress> failedServers) { if (failedServers != null && !failedServers.isEmpty() && failedServers.contains(preferredServer)) { return roundRobinBalancingStrategy.nextServer(failedServers); } return preferredServer; } }