blob: de74f5ad5ed7942a9413a856ef1aa341be0dd960 [file] [log] [blame]
/**
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.twitter.distributedlog.client;
import static com.google.common.base.Preconditions.checkNotNull;
import java.util.concurrent.TimeUnit;
/**
* Client Config.
*/
public class ClientConfig {
int redirectBackoffStartMs = 25;
int redirectBackoffMaxMs = 100;
int maxRedirects = -1;
int requestTimeoutMs = -1;
boolean thriftmux = false;
boolean streamFailfast = false;
String streamNameRegex = ".*";
boolean handshakeWithClientInfo = true;
long periodicHandshakeIntervalMs = TimeUnit.MINUTES.toMillis(5);
long periodicOwnershipSyncIntervalMs = TimeUnit.MINUTES.toMillis(5);
boolean periodicDumpOwnershipCacheEnabled = false;
long periodicDumpOwnershipCacheIntervalMs = TimeUnit.MINUTES.toMillis(10);
boolean enableHandshakeTracing = false;
boolean enableChecksum = true;
public ClientConfig setMaxRedirects(int maxRedirects) {
this.maxRedirects = maxRedirects;
return this;
}
public int getMaxRedirects() {
return this.maxRedirects;
}
public ClientConfig setRequestTimeoutMs(int timeoutInMillis) {
this.requestTimeoutMs = timeoutInMillis;
return this;
}
public int getRequestTimeoutMs() {
return this.requestTimeoutMs;
}
public ClientConfig setRedirectBackoffStartMs(int ms) {
this.redirectBackoffStartMs = ms;
return this;
}
public int getRedirectBackoffStartMs() {
return this.redirectBackoffStartMs;
}
public ClientConfig setRedirectBackoffMaxMs(int ms) {
this.redirectBackoffMaxMs = ms;
return this;
}
public int getRedirectBackoffMaxMs() {
return this.redirectBackoffMaxMs;
}
public ClientConfig setThriftMux(boolean enabled) {
this.thriftmux = enabled;
return this;
}
public boolean getThriftMux() {
return this.thriftmux;
}
public ClientConfig setStreamFailfast(boolean enabled) {
this.streamFailfast = enabled;
return this;
}
public boolean getStreamFailfast() {
return this.streamFailfast;
}
public ClientConfig setStreamNameRegex(String nameRegex) {
checkNotNull(nameRegex);
this.streamNameRegex = nameRegex;
return this;
}
public String getStreamNameRegex() {
return this.streamNameRegex;
}
public ClientConfig setHandshakeWithClientInfo(boolean enabled) {
this.handshakeWithClientInfo = enabled;
return this;
}
public boolean getHandshakeWithClientInfo() {
return this.handshakeWithClientInfo;
}
public ClientConfig setPeriodicHandshakeIntervalMs(long intervalMs) {
this.periodicHandshakeIntervalMs = intervalMs;
return this;
}
public long getPeriodicHandshakeIntervalMs() {
return this.periodicHandshakeIntervalMs;
}
public ClientConfig setPeriodicOwnershipSyncIntervalMs(long intervalMs) {
this.periodicOwnershipSyncIntervalMs = intervalMs;
return this;
}
public long getPeriodicOwnershipSyncIntervalMs() {
return this.periodicOwnershipSyncIntervalMs;
}
public ClientConfig setPeriodicDumpOwnershipCacheEnabled(boolean enabled) {
this.periodicDumpOwnershipCacheEnabled = enabled;
return this;
}
public boolean isPeriodicDumpOwnershipCacheEnabled() {
return this.periodicDumpOwnershipCacheEnabled;
}
public ClientConfig setPeriodicDumpOwnershipCacheIntervalMs(long intervalMs) {
this.periodicDumpOwnershipCacheIntervalMs = intervalMs;
return this;
}
public long getPeriodicDumpOwnershipCacheIntervalMs() {
return this.periodicDumpOwnershipCacheIntervalMs;
}
public ClientConfig setHandshakeTracingEnabled(boolean enabled) {
this.enableHandshakeTracing = enabled;
return this;
}
public boolean isHandshakeTracingEnabled() {
return this.enableHandshakeTracing;
}
public ClientConfig setChecksumEnabled(boolean enabled) {
this.enableChecksum = enabled;
return this;
}
public boolean isChecksumEnabled() {
return this.enableChecksum;
}
public static ClientConfig newConfig(ClientConfig config) {
ClientConfig newConfig = new ClientConfig();
newConfig.setMaxRedirects(config.getMaxRedirects())
.setRequestTimeoutMs(config.getRequestTimeoutMs())
.setRedirectBackoffStartMs(config.getRedirectBackoffStartMs())
.setRedirectBackoffMaxMs(config.getRedirectBackoffMaxMs())
.setThriftMux(config.getThriftMux())
.setStreamFailfast(config.getStreamFailfast())
.setStreamNameRegex(config.getStreamNameRegex())
.setHandshakeWithClientInfo(config.getHandshakeWithClientInfo())
.setPeriodicHandshakeIntervalMs(config.getPeriodicHandshakeIntervalMs())
.setPeriodicDumpOwnershipCacheEnabled(config.isPeriodicDumpOwnershipCacheEnabled())
.setPeriodicDumpOwnershipCacheIntervalMs(config.getPeriodicDumpOwnershipCacheIntervalMs())
.setHandshakeTracingEnabled(config.isHandshakeTracingEnabled())
.setChecksumEnabled(config.isChecksumEnabled());
return newConfig;
}
}