package com.netflix.discovery.shared.transport;
import com.netflix.config.DynamicPropertyFactory;
import static com.netflix.discovery.shared.transport.PropertyBasedTransportConfigConstants.*;
/**
* @author David Liu
*/
public class DefaultEurekaTransportConfig implements EurekaTransportConfig {
private static final String SUB_NAMESPACE = TRANSPORT_CONFIG_SUB_NAMESPACE + ".";
private final String namespace;
private final DynamicPropertyFactory configInstance;
public DefaultEurekaTransportConfig(String parentNamespace, DynamicPropertyFactory configInstance) {
this.namespace = parentNamespace == null
? SUB_NAMESPACE
: (parentNamespace.endsWith(".")
? parentNamespace + SUB_NAMESPACE
: parentNamespace + "." + SUB_NAMESPACE);
this.configInstance = configInstance;
}
@Override
public int getSessionedClientReconnectIntervalSeconds() {
return configInstance.getIntProperty(namespace + SESSION_RECONNECT_INTERVAL_KEY, Values.SESSION_RECONNECT_INTERVAL).get();
}
@Override
public double getRetryableClientQuarantineRefreshPercentage() {
return configInstance.getDoubleProperty(namespace + QUARANTINE_REFRESH_PERCENTAGE_KEY, Values.QUARANTINE_REFRESH_PERCENTAGE).get();
}
@Override
public int getApplicationsResolverDataStalenessThresholdSeconds() {
return configInstance.getIntProperty(namespace + DATA_STALENESS_THRESHOLD_KEY, Values.DATA_STALENESS_TRHESHOLD).get();
}
@Override
public boolean applicationsResolverUseIp() {
return configInstance.getBooleanProperty(namespace + APPLICATION_RESOLVER_USE_IP_KEY, false).get();
}
@Override
public int getAsyncResolverRefreshIntervalMs() {
return configInstance.getIntProperty(namespace + ASYNC_RESOLVER_REFRESH_INTERVAL_KEY, Values.ASYNC_RESOLVER_REFRESH_INTERVAL).get();
}
@Override
public int getAsyncResolverWarmUpTimeoutMs() {
return configInstance.getIntProperty(namespace + ASYNC_RESOLVER_WARMUP_TIMEOUT_KEY, Values.ASYNC_RESOLVER_WARMUP_TIMEOUT).get();
}
@Override
public int getAsyncExecutorThreadPoolSize() {
return configInstance.getIntProperty(namespace + ASYNC_EXECUTOR_THREADPOOL_SIZE_KEY, Values.ASYNC_EXECUTOR_THREADPOOL_SIZE).get();
}
@Override
public String getWriteClusterVip() {
return configInstance.getStringProperty(namespace + WRITE_CLUSTER_VIP_KEY, null).get();
}
@Override
public String getReadClusterVip() {
return configInstance.getStringProperty(namespace + READ_CLUSTER_VIP_KEY, null).get();
}
@Override
public String getBootstrapResolverStrategy() {
return configInstance.getStringProperty(namespace + BOOTSTRAP_RESOLVER_STRATEGY_KEY, null).get();
}
@Override
public boolean useBootstrapResolverForQuery() {
return configInstance.getBooleanProperty(namespace + USE_BOOTSTRAP_RESOLVER_FOR_QUERY, true).get();
}
}