/*
* Copyright (C) 2017 Julien Viet
*
* Licensed 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 io.vertx.sqlclient;
import io.vertx.codegen.annotations.DataObject;
import io.vertx.core.json.JsonObject;
The options for configuring a connection pool.
Author: Julien Viet
/**
* The options for configuring a connection pool.
*
* @author <a href="mailto:julien@julienviet.com">Julien Viet</a>
*/
@DataObject(generateConverter = true)
public class PoolOptions {
The default maximum number of connections a client will pool = 4
/**
* The default maximum number of connections a client will pool = 4
*/
public static final int DEFAULT_MAX_SIZE = 4;
Default max wait queue size = -1 (unbounded)
/**
* Default max wait queue size = -1 (unbounded)
*/
public static final int DEFAULT_MAX_WAIT_QUEUE_SIZE = -1;
private int maxSize = DEFAULT_MAX_SIZE;
private int maxWaitQueueSize = DEFAULT_MAX_WAIT_QUEUE_SIZE;
public PoolOptions() {
}
public PoolOptions(JsonObject json) {
PoolOptionsConverter.fromJson(json, this);
}
public PoolOptions(PoolOptions other) {
maxSize = other.maxSize;
maxWaitQueueSize = other.maxWaitQueueSize;
}
Returns: the maximum pool size
/**
* @return the maximum pool size
*/
public int getMaxSize() {
return maxSize;
}
Set the maximum pool size
Params: - maxSize – the maximum pool size
Returns: a reference to this, so the API can be used fluently
/**
* Set the maximum pool size
*
* @param maxSize the maximum pool size
* @return a reference to this, so the API can be used fluently
*/
public PoolOptions setMaxSize(int maxSize) {
if (maxSize < 0) {
throw new IllegalArgumentException("Max size cannot be negative");
}
this.maxSize = maxSize;
return this;
}
Returns: the maximum wait queue size
/**
* @return the maximum wait queue size
*/
public int getMaxWaitQueueSize() {
return maxWaitQueueSize;
}
Set the maximum connection request allowed in the wait queue, any requests beyond the max size will result in
an failure. If the value is set to a negative number then the queue will be unbounded.
Params: - maxWaitQueueSize – the maximum number of waiting requests
Returns: a reference to this, so the API can be used fluently
/**
* Set the maximum connection request allowed in the wait queue, any requests beyond the max size will result in
* an failure. If the value is set to a negative number then the queue will be unbounded.
*
* @param maxWaitQueueSize the maximum number of waiting requests
* @return a reference to this, so the API can be used fluently
*/
public PoolOptions setMaxWaitQueueSize(int maxWaitQueueSize) {
this.maxWaitQueueSize = maxWaitQueueSize;
return this;
}
public JsonObject toJson() {
JsonObject json = new JsonObject();
PoolOptionsConverter.toJson(this, json);
return json;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (!(o instanceof PoolOptions)) return false;
if (!super.equals(o)) return false;
PoolOptions that = (PoolOptions) o;
if (maxSize != that.maxSize) return false;
return true;
}
@Override
public int hashCode() {
int result = super.hashCode();
result = 31 * result + maxSize;
return result;
}
}