All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.qcloud.cos.ClientConfig Maven / Gradle / Ivy

There is a newer version: 5.6.238.2
Show newest version
/*
 * Copyright 2010-2019 Amazon.com, Inc. or its affiliates. All Rights Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License").
 * You may not use this file except in compliance with the License.
 * A copy of the License is located at
 *
 *  http://aws.amazon.com/apache2.0
 *
 * or in the "license" file accompanying this file. This file 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.

 * According to cos feature, we modify some class,comment, field name, etc.
 */


package com.qcloud.cos;

import com.qcloud.cos.auth.COSSigner;
import com.qcloud.cos.endpoint.DefaultEndpointResolver;
import com.qcloud.cos.endpoint.EndpointBuilder;
import com.qcloud.cos.endpoint.EndpointResolver;
import com.qcloud.cos.endpoint.RegionEndpointBuilder;
import com.qcloud.cos.endpoint.SuffixEndpointBuilder;
import com.qcloud.cos.http.DefaultHandlerAfterProcess;
import com.qcloud.cos.http.HandlerAfterProcess;
import com.qcloud.cos.http.HttpProtocol;
import com.qcloud.cos.region.Region;
import com.qcloud.cos.retry.BackoffStrategy;
import com.qcloud.cos.retry.PredefinedBackoffStrategies;
import com.qcloud.cos.retry.PredefinedRetryPolicies;
import com.qcloud.cos.retry.RetryPolicy;
import com.qcloud.cos.utils.VersionInfoUtils;

public class ClientConfig {

    // 默认的获取连接的超时时间, 单位ms
    private static final int DEFAULT_CONNECTION_REQUEST_TIMEOUT = -1;
    // 默认连接超时, 单位ms
    private static final int DEFAULT_CONNECTION_TIMEOUT = 30 * 1000;
    // 默认的SOCKET读取超时时间, 单位ms
    private static final int DEFAULT_SOCKET_TIMEOUT = 30 * 1000;
    // 默认请求超时时间, 单位ms
    private static final int DEFAULT_REQUEST_TIMEOUT = 5 * 60 * 1000;
    // 线程池关闭最长等待时间, 单位ms
    private static final int DEFAULT_SHUTDOWN_TIMEOUT = 60 * 1000;
    // 默认的维护最大HTTP连接数
    private static final int DEFAULT_MAX_CONNECTIONS_COUNT = 1024;
    private static final int DEFAULT_IDLE_CONNECTION_ALIVE = 60 * 1000;
    // 多次签名的默认过期时间,单位秒
    private static final long DEFAULT_SIGN_EXPIRED = 3600;
    // 默认的user_agent标识
    private static final String DEFAULT_USER_AGENT = VersionInfoUtils.getUserAgent();
    // Read Limit
    private static final int DEFAULT_READ_LIMIT = (2 << 17) + 1;
    /**
     * default retry times is 3 when retryable exception occured
     **/
    private static final int DEFAULT_RETRY_TIMES = 3;
    /**
     * The max retry times if retryable exception occured
     **/
    private int maxErrorRetry = DEFAULT_RETRY_TIMES;

    private int maxErrorRetryForCopyRequest = DEFAULT_RETRY_TIMES;
    /**
     * The retry policy if exception occured
     **/
    private static final RetryPolicy DEFAULT_RETRY_POLICY = PredefinedRetryPolicies.DEFAULT;
    /**
     * The sleep time interval between exception occured and retry
     **/
    public static final BackoffStrategy DEFAULT_BACKOFF_STRATEGY = PredefinedBackoffStrategies.DEFAULT;
    private Region region;
    private HttpProtocol httpProtocol = HttpProtocol.https;
    private String endPointSuffix = null;
    private EndpointBuilder endpointBuilder = null;
    private EndpointResolver endpointResolver = new DefaultEndpointResolver();
    private RetryPolicy retryPolicy = DEFAULT_RETRY_POLICY;
    private BackoffStrategy backoffStrategy = DEFAULT_BACKOFF_STRATEGY;

    // http proxy代理,如果使用http proxy代理,需要设置IP与端口
    private String httpProxyIp = null;
    private int httpProxyPort = 0;
    private String proxyUsername = null;
    private String proxyPassword = null;
    private boolean useBasicAuth = false;
    private long signExpired = DEFAULT_SIGN_EXPIRED;
    private int connectionRequestTimeout = DEFAULT_CONNECTION_REQUEST_TIMEOUT;
    private int connectionTimeout = DEFAULT_CONNECTION_TIMEOUT;
    private int socketTimeout = DEFAULT_SOCKET_TIMEOUT;
    private int maxConnectionsCount = DEFAULT_MAX_CONNECTIONS_COUNT;
    private int idleConnectionAlive = DEFAULT_IDLE_CONNECTION_ALIVE;
    private String userAgent = DEFAULT_USER_AGENT;
    private int readLimit = DEFAULT_READ_LIMIT;
    private COSSigner cosSigner = new COSSigner();

    private int requestTimeout = DEFAULT_REQUEST_TIMEOUT;
    private int shutdownTimeout = DEFAULT_SHUTDOWN_TIMEOUT;
    private boolean isRequestTimeOutEnable = false;

    // 数据万象特殊请求配置
    private boolean ciSpecialRequest = false;

    //是否区分host与endpoint
    private  boolean isDistinguishHost = false;

    private boolean isShortConnection = false;

    private boolean isChangeEndpointRetry = false;

    private boolean isPrintShutdownStackTrace = true;

    private boolean isCheckRequestPath = true;

    private int timeoutClientThreadSize = 0;

    private int errorLogStatusCodeThresh = 500;

    private boolean checkSSLCertificate = true;

    private boolean useDefaultDnsResolver = true;

    private HandlerAfterProcess handlerAfterProcess = new DefaultHandlerAfterProcess();

    private boolean isRefreshEndpointAddr = false;

    private boolean checkPreflightStatus = true;

    private long preflightStatusUpdateInterval = 10 * 1000L;

    private boolean isRedirectsEnabled = false;

    // 不传入region 用于后续调用List Buckets(获取所有的bucket信息)
    public ClientConfig() {
        super();
        this.region = null;
        this.endpointBuilder = new RegionEndpointBuilder(this.region);
    }

    // 除了List Buckets, 其他API需要传入region(比如上传,下载,遍历bucket文件)
    public ClientConfig(Region region) {
        super();
        this.region = region;
        this.endpointBuilder = new RegionEndpointBuilder(this.region);
    }

    public int getIdleConnectionAlive() {
        return this.idleConnectionAlive;
    }

    public void setIdleConnectionAlive(int idleConnectionAlive) {
        this.idleConnectionAlive = idleConnectionAlive;
    }

    public Region getRegion() {
        return region;
    }

    public void setRegion(Region region) {
        this.region = region;
        this.endpointBuilder = new RegionEndpointBuilder(this.region);
    }

    public HttpProtocol getHttpProtocol() {
        return httpProtocol;
    }

    public void setHttpProtocol(HttpProtocol httpProtocol) {
        this.httpProtocol = httpProtocol;
    }

    public String getHttpProxyIp() {
        return httpProxyIp;
    }

    public void setHttpProxyIp(String httpProxyIp) {
        this.httpProxyIp = httpProxyIp;
    }

    public int getHttpProxyPort() {
        return httpProxyPort;
    }

    public void setHttpProxyPort(int httpProxyPort) {
        this.httpProxyPort = httpProxyPort;
    }

    public long getSignExpired() {
        return signExpired;
    }

    public void setSignExpired(long signExpired) {
        this.signExpired = signExpired;
    }

    public int getConnectionRequestTimeout() {
        return connectionRequestTimeout;
    }

    public void setConnectionRequestTimeout(int connectionRequestTimeout) {
        this.connectionRequestTimeout = connectionRequestTimeout;
    }

    public int getConnectionTimeout() {
        return connectionTimeout;
    }

    public void setConnectionTimeout(int connectionTimeout) {
        this.connectionTimeout = connectionTimeout;
    }

    public int getSocketTimeout() {
        return socketTimeout;
    }

    public void setSocketTimeout(int socketTimeout) {
        this.socketTimeout = socketTimeout;
    }

    public int getMaxConnectionsCount() {
        return maxConnectionsCount;
    }

    public void setMaxConnectionsCount(int maxConnectionsCount) {
        this.maxConnectionsCount = maxConnectionsCount;
    }

    public void setUserAgent(String userAgent) {
        this.userAgent = userAgent;
    }

    public String getUserAgent() {
        return userAgent;
    }

    @Deprecated
    public String getEndPointSuffix() {
        return endPointSuffix;
    }

    public void setEndPointSuffix(String endPointSuffix) {
        this.endPointSuffix = endPointSuffix;
        this.endpointBuilder = new SuffixEndpointBuilder(endPointSuffix);
    }

    public int getReadLimit() {
        return readLimit;
    }

    public void setReadLimit(int readLimit) {
        this.readLimit = readLimit;
    }

    public EndpointBuilder getEndpointBuilder() {
        return endpointBuilder;
    }

    public void setEndpointBuilder(EndpointBuilder endpointBuilder) {
        this.endpointBuilder = endpointBuilder;
    }

    public EndpointResolver getEndpointResolver() {
        return endpointResolver;
    }

    public void setEndpointResolver(EndpointResolver endpointResolver) {
        this.endpointResolver = endpointResolver;
    }

    public String getProxyUsername() {
        return proxyUsername;
    }

    public void setProxyUsername(String proxyUsername) {
        this.proxyUsername = proxyUsername;
    }

    public String getProxyPassword() {
        return proxyPassword;
    }

    public void setProxyPassword(String proxyPassword) {
        this.proxyPassword = proxyPassword;
    }

    public void setUseBasicAuth(boolean useBasicAuth) {
        this.useBasicAuth = useBasicAuth;
    }

    public boolean useBasicAuth() {
        return useBasicAuth;
    }

    public int getMaxErrorRetry() {
        return maxErrorRetry;
    }

    public void setMaxErrorRetry(int maxErrorRetry) {
        this.maxErrorRetry = maxErrorRetry;
    }

    public int getMaxErrorRetryForCopyRequest() {
        return maxErrorRetryForCopyRequest;
    }

    public void setMaxErrorRetryForCopyRequest(int maxErrorRetry) {
        this.maxErrorRetryForCopyRequest = maxErrorRetry;
    }

    public RetryPolicy getRetryPolicy() {
        return retryPolicy;
    }

    public void setRetryPolicy(RetryPolicy retryPolicy) {
        this.retryPolicy = retryPolicy;
    }

    public BackoffStrategy getBackoffStrategy() {
        return backoffStrategy;
    }

    public void setBackoffStrategy(BackoffStrategy backoffStrategy) {
        this.backoffStrategy = backoffStrategy;
    }

    public COSSigner getCosSigner() {
        return cosSigner;
    }

    public void setCosSigner(COSSigner cosSigner) {
        this.cosSigner = cosSigner;
    }

    public boolean getCiSpecialRequest() {
        return ciSpecialRequest;
    }

    public void setCiSpecialRequest(boolean ciSpecialRequest) {
        this.ciSpecialRequest = ciSpecialRequest;
    }

    public void setIsDistinguishHost(boolean isDistinguishHost) {
        this.isDistinguishHost = isDistinguishHost;
    }

    public boolean getIsDistinguishHost() {
        return isDistinguishHost;
    }

    /**
     * 显示的设置使用短链接,在请求头中增加"Connection: close"
     * HTTP 1.1默认使用长链接
     */
    public void setShortConnection() {
        isShortConnection = true;
    }

    public boolean isShortConnection() {
        return isShortConnection;
    }

    public int getRequestTimeout () {
        return requestTimeout;
    }

    public void setRequestTimeout (int requestTimeout) {
        this.requestTimeout = requestTimeout;
    }

    public void setRequestTimeOutEnable(boolean requestTimeOutEnable) {
        this.isRequestTimeOutEnable = requestTimeOutEnable;
    }

    public boolean getRequestTimeOutEnable() {
        return isRequestTimeOutEnable && (requestTimeout > 0);
    }

    public void setShutdownTimeout(int shutdownTimeout) {
        this.shutdownTimeout = shutdownTimeout;
    }

    public int getShutdownTimeout() {
        return shutdownTimeout;
    }

    public boolean isChangeEndpointRetry() {
        return isChangeEndpointRetry;
    }

    public void setChangeEndpointRetry(boolean changeEndpointRetry) {
        isChangeEndpointRetry = changeEndpointRetry;
    }

    public boolean isPrintShutdownStackTrace() {
        return isPrintShutdownStackTrace;
    }

    public void setPrintShutdownStackTrace(boolean printShutdownStackTrace) {
        isPrintShutdownStackTrace = printShutdownStackTrace;
    }

    public void setCheckRequestPath(boolean isCheck) {
        isCheckRequestPath = isCheck;
    }

    public boolean isCheckRequestPath() {
        return isCheckRequestPath;
    }

    public int getTimeoutClientThreadSize() {
        return timeoutClientThreadSize;
    }

    public void setTimeoutClientThreadSize(int poolSize) {
        timeoutClientThreadSize = poolSize;
    }

    public void setErrorLogStatusCodeThresh(int statusCode) {
        errorLogStatusCodeThresh = statusCode;
    }

    public int getErrorLogStatusCodeThresh() {
        return errorLogStatusCodeThresh;
    }

    public void setCheckSSLCertificate(boolean isCheckSSLCertificate) {
        checkSSLCertificate = isCheckSSLCertificate;
    }

    public boolean isCheckSSLCertificate() {
        return checkSSLCertificate;
    }

    public void setUseDefaultDnsResolver(boolean useDefaultDnsResolver) {
        this.useDefaultDnsResolver = useDefaultDnsResolver;
    }

    public boolean isUseDefaultDnsResolver() {
        return useDefaultDnsResolver;
    }

    public void setHandlerAfterProcess(HandlerAfterProcess handler) {
        this.handlerAfterProcess = handler;
    }

    public HandlerAfterProcess getHandlerAfterProcess() {
        return handlerAfterProcess;
    }

    public void turnOnRefreshEndpointAddrSwitch() {
        isRefreshEndpointAddr = true;
    }

    public boolean IsRefreshEndpointAddr() {
        return isRefreshEndpointAddr;
    }

    public boolean isCheckPreflightStatus() {
        return checkPreflightStatus;
    }

    public void setCheckPreflightStatus(boolean checkPreflightStatus) {
        this.checkPreflightStatus = checkPreflightStatus;
    }

    public long getPreflightStatusUpdateInterval() {
        return preflightStatusUpdateInterval;
    }

    public boolean isRedirectsEnabled() {
        return isRedirectsEnabled;
    }

    public void setRedirectsEnabled(boolean redirectsEnabled) {
        isRedirectsEnabled = redirectsEnabled;
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy