com.datastax.driver.core.DataCentersFinder Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of dse-java-driver-core Show documentation
Show all versions of dse-java-driver-core Show documentation
A driver for DataStax Enterprise (DSE)
and Apache Cassandra 1.2+ clusters that works exclusively with the
Cassandra Query Language version 3 (CQL3) and Cassandra's binary protocol,
supporting DSE-specific features such as geospatial types, DSE Graph and DSE authentication.
/*
* Copyright DataStax, Inc.
*
* This software can be used solely with DataStax Enterprise. Please consult the license at
* http://www.datastax.com/terms/datastax-dse-driver-license-terms
*/
package com.datastax.driver.core;
import java.util.HashSet;
import java.util.Set;
class DataCentersFinder {
Set getDataCenters(Cluster cluster) {
int remoteConnectionsLength =
cluster
.getConfiguration()
.getPoolingOptions()
.getCoreConnectionsPerHost(HostDistance.REMOTE);
Set dataCenters = new HashSet();
for (Host h : cluster.getMetadata().getAllHosts()) {
HostDistance distance =
cluster.getConfiguration().getPolicies().getLoadBalancingPolicy().distance(h);
if (distance.equals(HostDistance.LOCAL)
|| (distance.equals(HostDistance.REMOTE) && remoteConnectionsLength > 0)) {
dataCenters.add(h.getDatacenter());
}
}
return dataCenters;
}
String getLocalDataCenter(Cluster cluster) {
for (Host h : cluster.getMetadata().getAllHosts()) {
HostDistance distance =
cluster.getConfiguration().getPolicies().getLoadBalancingPolicy().distance(h);
if (distance.equals(HostDistance.LOCAL)) {
return h.getDatacenter();
}
}
return null;
}
}