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

tech.ydb.table.impl.pool.SessionPoolOptions Maven / Gradle / Ivy

package tech.ydb.table.impl.pool;

import java.util.concurrent.TimeUnit;


/**
 * @author Sergey Polovko
 */
public final class SessionPoolOptions {

    public static final SessionPoolOptions DEFAULT = new SessionPoolOptions(
        10,                            // minSize
        50,                            // maxSize
        TimeUnit.MINUTES.toMillis(5),  // keepAliveTimeMillis
        TimeUnit.MINUTES.toMillis(1)); // maxIdleTimeMillis

    private final int minSize;
    private final int maxSize;
    private final long keepAliveTimeMillis;
    private final long maxIdleTimeMillis;

    SessionPoolOptions(
        int minSize,
        int maxSize,
        long keepAliveTimeMillis,
        long maxIdleTimeMillis) {
        this.minSize = minSize;
        this.maxSize = maxSize;
        this.keepAliveTimeMillis = keepAliveTimeMillis;
        this.maxIdleTimeMillis = maxIdleTimeMillis;
    }

    int getMinSize() {
        return minSize;
    }

    int getMaxSize() {
        return maxSize;
    }

    long getKeepAliveTimeMillis() {
        return keepAliveTimeMillis;
    }

    long getMaxIdleTimeMillis() {
        return maxIdleTimeMillis;
    }

    public SessionPoolOptions withSize(int minSize, int maxSize) {
        return new SessionPoolOptions(minSize, maxSize, keepAliveTimeMillis, maxIdleTimeMillis);
    }

    public SessionPoolOptions withKeepAliveTimeMillis(long timeMillis) {
        return new SessionPoolOptions(minSize, maxSize, timeMillis, maxIdleTimeMillis);
    }

    public SessionPoolOptions withMaxIdleTimeMillis(long timeMillis) {
        return new SessionPoolOptions(minSize, maxSize, keepAliveTimeMillis, timeMillis);
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy