}
@Override
public ILoadBalancer get() {
// Load the singleton ClientConfig lazily
ClientConfig config = this.config.get();
if (config.getLoadBalancerType() != null) {
if (!impls.containsKey(config.getLoadBalancerType())) {
throw new RuntimeException(
String.format("Unknown load balancer type '%s'. Expecting one of %s",
config.getLoadBalancerType(),
impls.keySet()));
}
return impls.get(config.getLoadBalancerType()).get();
}
else {
return impls.get(DEFAULT_LOAD_BALANCER_TYPE).get();
}
}