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

com.xzixi.sftp.pool.SftpPoolConfig Maven / Gradle / Ivy

package com.xzixi.sftp.pool;

import org.apache.commons.pool2.impl.EvictionPolicy;
import org.apache.commons.pool2.impl.GenericObjectPoolConfig;

/**
 * sftp连接池配置
 */
public class SftpPoolConfig extends GenericObjectPoolConfig {

    public static class Builder {
        private int maxTotal;
        private int maxIdle;
        private int minIdle;
        private boolean lifo;
        private boolean fairness;
        private long maxWaitMillis;
        private long minEvictableIdleTimeMillis;
        private long evictorShutdownTimeoutMillis;
        private long softMinEvictableIdleTimeMillis;
        private int numTestsPerEvictionRun;
        private EvictionPolicy evictionPolicy; // 仅2.6.0版本commons-pool2需要设置
        private String evictionPolicyClassName;
        private boolean testOnCreate;
        private boolean testOnBorrow;
        private boolean testOnReturn;
        private boolean testWhileIdle;
        private long timeBetweenEvictionRunsMillis;
        private boolean blockWhenExhausted;
        private boolean jmxEnabled;
        private String jmxNamePrefix;
        private String jmxNameBase;
        public SftpPoolConfig build() {
            SftpPoolConfig config = new SftpPoolConfig();
            config.setMaxTotal(maxTotal);
            config.setMaxIdle(maxIdle);
            config.setMinIdle(minIdle);
            config.setLifo(lifo);
            config.setFairness(fairness);
            config.setMaxWaitMillis(maxWaitMillis);
            config.setMinEvictableIdleTimeMillis(minEvictableIdleTimeMillis);
            config.setEvictorShutdownTimeoutMillis(evictorShutdownTimeoutMillis);
            config.setSoftMinEvictableIdleTimeMillis(softMinEvictableIdleTimeMillis);
            config.setNumTestsPerEvictionRun(numTestsPerEvictionRun);
            config.setEvictionPolicy(evictionPolicy);
            config.setEvictionPolicyClassName(evictionPolicyClassName);
            config.setTestOnCreate(testOnCreate);
            config.setTestOnBorrow(testOnBorrow);
            config.setTestOnReturn(testOnReturn);
            config.setTestWhileIdle(testWhileIdle);
            config.setTimeBetweenEvictionRunsMillis(timeBetweenEvictionRunsMillis);
            config.setBlockWhenExhausted(blockWhenExhausted);
            config.setJmxEnabled(jmxEnabled);
            config.setJmxNamePrefix(jmxNamePrefix);
            config.setJmxNameBase(jmxNameBase);
            return config;
        }
        public Builder maxTotal(int maxTotal) {
            this.maxTotal = maxTotal;
            return this;
        }
        public Builder maxIdle(int maxIdle) {
            this.maxIdle = maxIdle;
            return this;
        }
        public Builder minIdle(int minIdle) {
            this.minIdle = minIdle;
            return this;
        }
        public Builder lifo(boolean lifo) {
            this.lifo = lifo;
            return this;
        }
        public Builder fairness(boolean fairness) {
            this.fairness = fairness;
            return this;
        }
        public Builder maxWaitMillis(long maxWaitMillis) {
            this.maxWaitMillis = maxWaitMillis;
            return this;
        }
        public Builder minEvictableIdleTimeMillis(long minEvictableIdleTimeMillis) {
            this.minEvictableIdleTimeMillis = minEvictableIdleTimeMillis;
            return this;
        }
        public Builder evictorShutdownTimeoutMillis(long evictorShutdownTimeoutMillis) {
            this.evictorShutdownTimeoutMillis = evictorShutdownTimeoutMillis;
            return this;
        }
        public Builder softMinEvictableIdleTimeMillis(long softMinEvictableIdleTimeMillis) {
            this.softMinEvictableIdleTimeMillis = softMinEvictableIdleTimeMillis;
            return this;
        }
        public Builder numTestsPerEvictionRun(int numTestsPerEvictionRun) {
            this.numTestsPerEvictionRun = numTestsPerEvictionRun;
            return this;
        }
        public Builder evictionPolicy(EvictionPolicy evictionPolicy) {
            this.evictionPolicy = evictionPolicy;
            return this;
        }
        public Builder evictionPolicyClassName(String evictionPolicyClassName) {
            this.evictionPolicyClassName = evictionPolicyClassName;
            return this;
        }
        public Builder testOnCreate(boolean testOnCreate) {
            this.testOnCreate = testOnCreate;
            return this;
        }
        public Builder testOnBorrow(boolean testOnBorrow) {
            this.testOnBorrow = testOnBorrow;
            return this;
        }
        public Builder testOnReturn(boolean testOnReturn) {
            this.testOnReturn = testOnReturn;
            return this;
        }
        public Builder testWhileIdle(boolean testWhileIdle) {
            this.testWhileIdle = testWhileIdle;
            return this;
        }
        public Builder timeBetweenEvictionRunsMillis(long timeBetweenEvictionRunsMillis) {
            this.timeBetweenEvictionRunsMillis = timeBetweenEvictionRunsMillis;
            return this;
        }
        public Builder blockWhenExhausted(boolean blockWhenExhausted) {
            this.blockWhenExhausted = blockWhenExhausted;
            return this;
        }
        public Builder jmxEnabled(boolean jmxEnabled) {
            this.jmxEnabled = jmxEnabled;
            return this;
        }
        public Builder jmxNamePrefix(String jmxNamePrefix) {
            this.jmxNamePrefix = jmxNamePrefix;
            return this;
        }
        public Builder jmxNameBase(String jmxNameBase) {
            this.jmxNameBase = jmxNameBase;
            return this;
        }
    }

}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy