package ezdb.rocksdb;
import java.util.Comparator;
import org.rocksdb.ComparatorOptions;
import org.rocksdb.Slice;
import ezdb.util.Util;
/**
* LevelDb provides a comparator interface that we can use to handle hash/range
* pairs.
*
* @author criccomini
*
*/
public class EzRocksDbComparator extends org.rocksdb.Comparator {
public static final String name = EzRocksDbComparator.class.toString();
private final Comparator<byte[]> hashKeyComparator;
private final Comparator<byte[]> rangeKeyComparator;
public EzRocksDbComparator(Comparator<byte[]> hashKeyComparator,
Comparator<byte[]> rangeKeyComparator) {
super(new ComparatorOptions());
this.hashKeyComparator = hashKeyComparator;
this.rangeKeyComparator = rangeKeyComparator;
}
@Override
public int compare(Slice a, Slice b) {
return Util.compareKeys(hashKeyComparator, rangeKeyComparator, a.data(), b.data());
}
@Override
public String name() {
return name;
}
}