package org.infinispan.persistence.rest.configuration;
import org.infinispan.commons.configuration.BuiltBy;
import org.infinispan.commons.configuration.ConfigurationFor;
import org.infinispan.commons.configuration.attributes.Attribute;
import org.infinispan.commons.configuration.attributes.AttributeDefinition;
import org.infinispan.commons.configuration.attributes.AttributeSet;
import org.infinispan.configuration.serializing.SerializedWith;
/**
* ConnectionPoolConfiguration.
*
* @author Tristan Tarrant
* @since 6.0
*/
@BuiltBy(ConnectionPoolConfigurationBuilder.class)
public class ConnectionPoolConfiguration {
static final AttributeDefinition<Integer> CONNECTION_TIMEOUT = AttributeDefinition.builder("connectionTimeout", 60000).immutable().build();
static final AttributeDefinition<Integer> MAX_CONNECTIONS_PER_HOST = AttributeDefinition.builder("maxConnectionsPerHostTimeout", 4).immutable().build();
static final AttributeDefinition<Integer> MAX_TOTAL_CONNECTIONS = AttributeDefinition.builder("maxTotalConnections", 20).immutable().build();
static final AttributeDefinition<Integer> BUFFER_SIZE = AttributeDefinition.builder("bufferSize", 8192).immutable().build();
static final AttributeDefinition<Integer> SOCKET_TIMEOUT = AttributeDefinition.builder("socketTimeout", 60000).immutable().build();
static final AttributeDefinition<Boolean> TCP_NO_DELAY = AttributeDefinition.builder("tcpNoDelay", true).immutable().build();
static AttributeSet attributeDefinitionSet() {
return new AttributeSet(ConnectionPoolConfiguration.class, CONNECTION_TIMEOUT, MAX_CONNECTIONS_PER_HOST,
MAX_TOTAL_CONNECTIONS, BUFFER_SIZE, SOCKET_TIMEOUT, TCP_NO_DELAY);
}
private final AttributeSet attributes;
public ConnectionPoolConfiguration(AttributeSet attributes) {
this.attributes = attributes;
}
public int connectionTimeout() {
return attributes.attribute(CONNECTION_TIMEOUT).get();
}
public int maxConnectionsPerHost() {
return attributes.attribute(MAX_CONNECTIONS_PER_HOST).get();
}
public int maxTotalConnections() {
return attributes.attribute(MAX_TOTAL_CONNECTIONS).get();
}
public int bufferSize() {
return attributes.attribute(BUFFER_SIZE).get();
}
public int socketTimeout() {
return attributes.attribute(SOCKET_TIMEOUT).get();
}
public boolean tcpNoDelay() {
return attributes.attribute(TCP_NO_DELAY).get();
}
@Override
public String toString() {
return "ConnectionPoolConfiguration [connectionTimeout=" + connectionTimeout() + ", maxConnectionsPerHost=" + maxConnectionsPerHost() + ", maxTotalConnections="
+ maxTotalConnections() + ", bufferSize=" + bufferSize() + ", socketTimeout=" + socketTimeout() + ", tcpNoDelay="
+ tcpNoDelay() + "]";
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
ConnectionPoolConfiguration that = (ConnectionPoolConfiguration) o;
if (connectionTimeout() != that.connectionTimeout()) return false;
if (maxConnectionsPerHost() != that.maxConnectionsPerHost()) return false;
if (maxTotalConnections() != that.maxTotalConnections()) return false;
if (bufferSize() != that.bufferSize()) return false;
if (socketTimeout() != that.socketTimeout()) return false;
return tcpNoDelay() == that.tcpNoDelay();
}
@Override
public int hashCode() {
int result = connectionTimeout();
result = 31 * result + maxConnectionsPerHost();
result = 31 * result + maxTotalConnections();
result = 31 * result + bufferSize();
result = 31 * result + socketTimeout();
result = 31 * result + (tcpNoDelay() ? 1 : 0);
return result;
}
}