@Override
public int compare(byte[] b1, int o1, int l1, byte[] b2, int o2, int l2) {
SerializedComparator[] sc = comparators;
int off1 = o1;
int off2 = o2;
for (int i = 0; i < sc.length - 1; i++) {
int klen1 = Bytes.getVarInt(b1, off1);
int klen2 = Bytes.getVarInt(b2, off2);
off1 += Bytes.sizeofVarInt(klen1);
off2 += Bytes.sizeofVarInt(klen2);
if (!SoplogToken.isWildcard(b1, off1, b2, off2)) {
int diff = sc[i].compare(b1, off1, klen1, b2, off2, klen2);
if (diff != 0) {
return diff;
}
}
off1 += klen1;
off2 += klen2;
}
if (!SoplogToken.isWildcard(b1, off1, b2, off2)) {
l1 -= (off1 - o1);
l2 -= (off2 - o2);
return sc[sc.length - 1].compare(b1, off1, l1, b2, off2, l2);
}
return 0;
}