package com.netflix.discovery.shared.transport;
import com.google.inject.Inject;
import com.netflix.archaius.api.Config;
import com.netflix.archaius.api.annotations.ConfigurationSource;
import com.netflix.discovery.CommonConstants;
import com.netflix.discovery.internal.util.InternalPrefixedConfig;
import javax.inject.Singleton;
import static com.netflix.discovery.shared.transport.PropertyBasedTransportConfigConstants.*;
/**
* @author David Liu
*/
@Singleton
@ConfigurationSource(CommonConstants.CONFIG_FILE_NAME)
public class EurekaArchaius2TransportConfig implements EurekaTransportConfig {
private final Config configInstance;
private final InternalPrefixedConfig prefixedConfig;
@Inject
public EurekaArchaius2TransportConfig(Config configInstance) {
this(configInstance, CommonConstants.DEFAULT_CONFIG_NAMESPACE, TRANSPORT_CONFIG_SUB_NAMESPACE);
}
public EurekaArchaius2TransportConfig(Config configInstance, String parentNamespace) {
this(configInstance, parentNamespace, TRANSPORT_CONFIG_SUB_NAMESPACE);
}
public EurekaArchaius2TransportConfig(Config configInstance, String parentNamespace, String subNamespace) {
this.configInstance = configInstance;
this.prefixedConfig = new InternalPrefixedConfig(configInstance, parentNamespace, subNamespace);
}
@Override
public int getSessionedClientReconnectIntervalSeconds() {
return prefixedConfig.getInteger(SESSION_RECONNECT_INTERVAL_KEY, Values.SESSION_RECONNECT_INTERVAL);
}
@Override
public double getRetryableClientQuarantineRefreshPercentage() {
return prefixedConfig.getDouble(QUARANTINE_REFRESH_PERCENTAGE_KEY, Values.QUARANTINE_REFRESH_PERCENTAGE);
}
@Override
public int getApplicationsResolverDataStalenessThresholdSeconds() {
return prefixedConfig.getInteger(DATA_STALENESS_THRESHOLD_KEY, Values.DATA_STALENESS_TRHESHOLD);
}
@Override
public boolean applicationsResolverUseIp() {
return prefixedConfig.getBoolean(APPLICATION_RESOLVER_USE_IP_KEY, false);
}
@Override
public int getAsyncResolverRefreshIntervalMs() {
return prefixedConfig.getInteger(ASYNC_RESOLVER_REFRESH_INTERVAL_KEY, Values.ASYNC_RESOLVER_REFRESH_INTERVAL);
}
@Override
public int getAsyncResolverWarmUpTimeoutMs() {
return prefixedConfig.getInteger(ASYNC_RESOLVER_WARMUP_TIMEOUT_KEY, Values.ASYNC_RESOLVER_WARMUP_TIMEOUT);
}
@Override
public int getAsyncExecutorThreadPoolSize() {
return prefixedConfig.getInteger(ASYNC_EXECUTOR_THREADPOOL_SIZE_KEY, Values.ASYNC_EXECUTOR_THREADPOOL_SIZE);
}
@Override
public String getWriteClusterVip() {
return prefixedConfig.getString(WRITE_CLUSTER_VIP_KEY, null);
}
@Override
public String getReadClusterVip() {
return prefixedConfig.getString(READ_CLUSTER_VIP_KEY, null);
}
@Override
public String getBootstrapResolverStrategy() {
return prefixedConfig.getString(BOOTSTRAP_RESOLVER_STRATEGY_KEY, null);
}
@Override
public boolean useBootstrapResolverForQuery() {
return prefixedConfig.getBoolean(USE_BOOTSTRAP_RESOLVER_FOR_QUERY, true);
}
}