package org.infinispan.persistence.rocksdb.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.cache.AbstractStoreConfiguration;
import org.infinispan.configuration.cache.AsyncStoreConfiguration;
import org.infinispan.configuration.cache.SingletonStoreConfiguration;
import org.infinispan.configuration.serializing.SerializedWith;
import org.infinispan.persistence.rocksdb.RocksDBStore;
/**
*
* @author <a href="mailto:rtsang@redhat.com">Ray Tsang</a>
*
*/
@ConfigurationFor(RocksDBStore.class)
@BuiltBy(RocksDBStoreConfigurationBuilder.class)
@SerializedWith(RocksDBStoreConfigurationSerializer.class)
public class RocksDBStoreConfiguration extends AbstractStoreConfiguration {
final static AttributeDefinition<String> LOCATION = AttributeDefinition.builder("location", "Infinispan-RocksDBStore/data").immutable().xmlName("path").build();
final static AttributeDefinition<String> EXPIRED_LOCATION = AttributeDefinition.builder("expiredLocation", "Infinispan-RocksDBStore/expired").immutable().autoPersist(false).xmlName("path").build();
final static AttributeDefinition<CompressionType> COMPRESSION_TYPE = AttributeDefinition.builder("compressionType", CompressionType.NONE).immutable().autoPersist(false).build();
final static AttributeDefinition<Integer> BLOCK_SIZE = AttributeDefinition.builder("blockSize", 0).immutable().build();
final static AttributeDefinition<Long> CACHE_SIZE = AttributeDefinition.builder("cacheSize", 0l).immutable().build();
final static AttributeDefinition<Integer> EXPIRY_QUEUE_SIZE = AttributeDefinition.builder("expiryQueueSize", 10000).immutable().autoPersist(false).build();
final static AttributeDefinition<Integer> CLEAR_THRESHOLD = AttributeDefinition.builder("clearThreshold", 10000).immutable().build();
public static AttributeSet attributeDefinitionSet() {
return new AttributeSet(RocksDBStoreConfiguration.class, AbstractStoreConfiguration.attributeDefinitionSet(), LOCATION, EXPIRED_LOCATION, COMPRESSION_TYPE,
BLOCK_SIZE, CACHE_SIZE, EXPIRY_QUEUE_SIZE, CLEAR_THRESHOLD);
}
private final Attribute<String> location;
private final Attribute<String> expiredLocation;
private final Attribute<CompressionType> compressionType;
private final Attribute<Integer> blockSize;
private final Attribute<Long> cacheSize;
private final Attribute<Integer> expiryQueueSize;
private final Attribute<Integer> clearThreshold;
public RocksDBStoreConfiguration(AttributeSet attributes, AsyncStoreConfiguration async, SingletonStoreConfiguration singletonStore) {
super(attributes, async, singletonStore);
location = attributes.attribute(LOCATION);
expiredLocation = attributes.attribute(EXPIRED_LOCATION);
compressionType = attributes.attribute(COMPRESSION_TYPE);
blockSize = attributes.attribute(BLOCK_SIZE);
cacheSize = attributes.attribute(CACHE_SIZE);
expiryQueueSize = attributes.attribute(EXPIRY_QUEUE_SIZE);
clearThreshold = attributes.attribute(CLEAR_THRESHOLD);
}
public String location() {
return location.get();
}
public String expiredLocation() {
return expiredLocation.get();
}
public CompressionType compressionType() {
return compressionType.get();
}
public Integer blockSize() {
return blockSize.get();
}
public Long cacheSize() {
return cacheSize.get();
}
public int expiryQueueSize() {
return expiryQueueSize.get();
}
public int clearThreshold() {
return clearThreshold.get();
}
}