package com.rubiconproject.oss.kv.distributed;
import java.util.concurrent.TimeUnit;
import com.rubiconproject.oss.kv.backends.ConnectionFactory;
public class Configuration {
private NodeStore nodeStore;
private OperationQueue syncOperationQueue;
private OperationQueue asyncOperationQueue;
private ConnectionFactory connectionFactory;
// r: minimum # of nodes that must participate in a successful read
private int requiredReads = 2;
// w: minimum # of nodes that must participate in a successful write
private int requiredWrites = 2;
// n: number of write replicas. r + w should be > n
private int writeReplicas = 3;
// number of read replicas. provided as a tuning parameter for high perf
// reads (set low).
private int readReplicas = writeReplicas;
// max wait time for reads
private long readOperationTimeout = 1000l;
// max wait time for writes
private long writeOperationTimeout = 1000l;
// max errors in a given period before a node is evicted
private int maxNodeErrorCount = 10;
// time period for above error count
private TimeUnit nodeErrorCountPeriod = TimeUnit.MINUTES;
// send an async set() request to nodes that return null on get requests
private boolean fillNullGetResults = true;
// send an async set() request to nodes that throw an exception on get requests
private boolean fillErrorGetResults = false;
public NodeStore getNodeStore() {
return nodeStore;
}
public void setNodeStore(NodeStore store) {
this.nodeStore = store;
}
public OperationQueue getSyncOperationQueue() {
return syncOperationQueue;
}
public void setSyncOperationQueue(OperationQueue queue) {
this.syncOperationQueue = queue;
}
public OperationQueue getAsyncOperationQueue() {
return asyncOperationQueue;
}
public void setAsyncOperationQueue(OperationQueue queue) {
this.asyncOperationQueue = queue;
}
public ConnectionFactory getConnectionFactory() {
return connectionFactory;
}
public void setConnectionFactory(ConnectionFactory factory) {
this.connectionFactory = factory;
}
public int getRequiredReads() {
return requiredReads;
}
public void setRequiredReads(int requiredReads) {
this.requiredReads = requiredReads;
}
public int getRequiredWrites() {
return requiredWrites;
}
public void setRequiredWrites(int requiredWrites) {
this.requiredWrites = requiredWrites;
}
public int getWriteReplicas() {
return writeReplicas;
}
public void setWriteReplicas(int writeReplicas) {
this.writeReplicas = writeReplicas;
}
public int getReadReplicas() {
return readReplicas;
}
public void setReadReplicas(int readReplicas) {
this.readReplicas = readReplicas;
}
public long getReadOperationTimeout() {
return readOperationTimeout;
}
public void setReadOperationTimeout(long readOperationTimeout) {
this.readOperationTimeout = readOperationTimeout;
}
public long getWriteOperationTimeout() {
return writeOperationTimeout;
}
public void setWriteOperationTimeout(long writeOperationTimeout) {
this.writeOperationTimeout = writeOperationTimeout;
}
public int getMaxNodeErrorCount() {
return maxNodeErrorCount;
}
public void setMaxNodeErrorCount(int maxNodeErrorCount) {
this.maxNodeErrorCount = maxNodeErrorCount;
}
public TimeUnit getNodeErrorCountPeriod() {
return nodeErrorCountPeriod;
}
public void setNodeErrorCountPeriod(TimeUnit nodeErrorCountPeriod) {
this.nodeErrorCountPeriod = nodeErrorCountPeriod;
}
public boolean getFillNullGetResults() {
return fillNullGetResults;
}
public void setFillNullGetResults(boolean fillNullGetResults) {
this.fillNullGetResults = fillNullGetResults;
}
public boolean getFillErrorGetResults() {
return fillErrorGetResults;
}
public void setFillErrorGetResults(boolean fillErrorGetResults) {
this.fillErrorGetResults = fillErrorGetResults;
}
}