@Override public long readLong() throws IOException { long l = buf.getLong(offset); offset += 8; return l; }
@Override public long version( BolBuffer rawEntrys) { return rawEntrys.getLong(keyLength + 8 + 1); }
@Override public long timestamp( BolBuffer rawEntrys) { return rawEntrys.getLong(keyLength); }
@Override public BolBuffer merge( BolBuffer currentRawEntry, BolBuffer addingRawEntry) { int currentKeyLength = keyLength; int addingKeyLength = keyLength; long currentsTimestamp = currentRawEntry.getLong(currentKeyLength); long currentsVersion = currentRawEntry.getLong(currentKeyLength + 8 + 1); long addingsTimestamp = addingRawEntry.getLong(addingKeyLength); long addingsVersion = addingRawEntry.getLong(addingKeyLength + 8 + 1); if ((currentsTimestamp > addingsTimestamp) || (currentsTimestamp == addingsTimestamp && currentsVersion > addingsVersion)) { return currentRawEntry; } else { return addingRawEntry; } }
@Override public BolBuffer merge( BolBuffer currentRawEntry, BolBuffer addingRawEntry) { int currentKeyLength = currentRawEntry.getInt(0); int addingKeyLength = addingRawEntry.getInt(0); long currentsTimestamp = currentRawEntry.getLong(4 + currentKeyLength); long currentsVersion = currentRawEntry.getLong(4 + currentKeyLength + 8 + 1); long addingsTimestamp = addingRawEntry.getLong(4 + addingKeyLength); long addingsVersion = addingRawEntry.getLong(4 + addingKeyLength + 8 + 1); if ((currentsTimestamp > addingsTimestamp) || (currentsTimestamp == addingsTimestamp && currentsVersion > addingsVersion)) { return currentRawEntry; } else { return addingRawEntry; } }
@Override public long timestamp( BolBuffer rawEntrys) { return rawEntrys.getLong(4 + rawEntrys.getInt(0)); }
@Override public long version( BolBuffer rawEntrys) { return rawEntrys.getLong(4 + rawEntrys.getInt(0) + 8 + 1); }
public static int compare(BolBuffer left, BolBuffer right) { int leftLength = left.length; int rightLength = right.length; int minLength = Math.min(leftLength, rightLength); int minWords = minLength / 8; int i; for (i = 0; i < minWords * 8; i += 8) { long result = left.getLong(i); long rw = right.getLong(i); if (result != rw) { return UnsignedLongs.compare(result, rw); } } for (i = minWords * 8; i < minLength; ++i) { int var11 = UnsignedBytes.compare(left.get(i), right.get(i)); if (var11 != 0) { return var11; } } return leftLength - rightLength; }
@Override public boolean streamRawEntry(int index, BolBuffer rawEntry, BolBuffer keyBuffer, BolBuffer valueBuffer, ValueStream stream) throws Exception { if (rawEntry == null) { return stream.stream(index, null, -1, false, -1, null); } BolBuffer key = rawEntry.sliceInto(0, keyLength, keyBuffer); long timestamp = rawEntry.getLong( keyLength); boolean tombstone = rawEntry.get( keyLength + 8) != 0; long version = rawEntry.getLong(keyLength + 8 + 1); BolBuffer payload = null; if (valueBuffer != null) { int payloadLength = rawEntry.getInt(keyLength + 8 + 1 + 8); if (payloadLength >= 0) { payload = rawEntry.sliceInto( keyLength + 8 + 1 + 8 + 4, payloadLength, valueBuffer); } } return stream.stream(index, key, timestamp, tombstone, version, payload); }
@Override public boolean streamRawEntry(int index, BolBuffer rawEntry, BolBuffer keyBuffer, BolBuffer valueBuffer, ValueStream stream) throws Exception { if (rawEntry == null) { return stream.stream(index, null, -1, false, -1, null); } int keyLength = rawEntry.getInt(0); BolBuffer key = rawEntry.sliceInto(4, keyLength, keyBuffer); long timestamp = rawEntry.getLong(4 + keyLength); boolean tombstone = rawEntry.get(4 + keyLength + 8) != 0; long version = rawEntry.getLong(4 + keyLength + 8 + 1); BolBuffer payload = null; if (valueBuffer != null) { int payloadLength = rawEntry.getInt(4 + keyLength + 8 + 1 + 8); if (payloadLength >= 0) { payload = rawEntry.sliceInto(4 + keyLength + 8 + 1 + 8 + 4, payloadLength, valueBuffer); } } return stream.stream(index, key, timestamp, tombstone, version, payload); }