package com.hubspot.blazar.config;
import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.google.common.base.Optional;
import javax.validation.constraints.Min;
import javax.validation.constraints.NotNull;
public class ZooKeeperConfiguration {
@NotNull
private final String quorum;
@NotNull
private final String namespace;
@Min(0)
private final int sessionTimeoutMillis;
@Min(0)
private final int connectTimeoutMillis;
@Min(0)
private final int initialRetryBackoffMillis;
@Min(0)
private final int maxRetries;
@JsonCreator
public ZooKeeperConfiguration(@JsonProperty("quorum") String quorum,
@JsonProperty("namespace") String namespace,
@JsonProperty("sessionTimeoutMillis") Optional<Integer> sessionTimeoutMillis,
@JsonProperty("connectTimeoutMillis") Optional<Integer> connectTimeoutMillis,
@JsonProperty("initialRetryBackoffMillis") Optional<Integer> initialRetryBackoffMillis,
@JsonProperty("maxRetries") Optional<Integer> maxRetries) {
this.quorum = quorum;
this.namespace = namespace;
this.sessionTimeoutMillis = sessionTimeoutMillis.or(600_000);
this.connectTimeoutMillis = connectTimeoutMillis.or(60_000);
this.initialRetryBackoffMillis = initialRetryBackoffMillis.or(1_000);
this.maxRetries = maxRetries.or(3);
}
public String getQuorum() {
return quorum;
}
public String getNamespace() {
return namespace;
}
public int getSessionTimeoutMillis() {
return sessionTimeoutMillis;
}
public int getConnectTimeoutMillis() {
return connectTimeoutMillis;
}
public int getInitialRetryBackoffMillis() {
return initialRetryBackoffMillis;
}
public int getMaxRetries() {
return maxRetries;
}
}