package smartkv.server; import java.io.Serializable; import java.util.Arrays; import java.util.Comparator; import com.google.common.hash.HashFunction; import com.google.common.hash.Hashing; import com.google.common.primitives.UnsignedBytes; public class ByteArrayWrapper implements Serializable{ /** * */ private static final long serialVersionUID = 1L; public final byte[] value; //TODO - change this for something that can be serializable? public static final HashFunction hf = Hashing.murmur3_32(); public ByteArrayWrapper(byte[] v){ value = v; } public final static Comparator<ByteArrayWrapper> COMPARE = new Comparator<ByteArrayWrapper>(){ @Override public int compare(ByteArrayWrapper o1, ByteArrayWrapper o2) { //FIXME return UnsignedBytes.lexicographicalComparator().compare(o1.value, o2.value); } }; @Override public final boolean equals(Object obj) { if (this == obj) return true; if (obj == null) return false; if (getClass() != obj.getClass()) return false; ByteArrayWrapper other = (ByteArrayWrapper) obj; if (!Arrays.equals(value, other.value)) return false; return true; } @Override public final int hashCode(){ return hf.hashBytes(value).asInt(); } }