/** THIS METHOD IS NOT THREAD-SAFE. Use only at load time (or be mindful of thread safety). */ public long unsafeReadNByteLong(long offset, int bytes) { return readNByteLong(offset, bytes, unsafeReadPos); }
/** * @param ref Reference. * @return The offset to value and key length vlongs of the first record referenced by ref. */ private long getFirstRecordLengthsOffset(long ref, WriteBuffers.Position readPos) { long tailOffset = Ref.getOffset(ref); if (Ref.hasList(ref)) { long relativeOffset = (readPos == null) ? writeBuffers.unsafeReadNByteLong(tailOffset, 5) : writeBuffers.readNByteLong(tailOffset, 5, readPos); tailOffset += relativeOffset; } return tailOffset; }
/** * @param ref Reference. * @return The offset to value and key length vlongs of the first record referenced by ref. */ private long getFirstRecordLengthsOffset(long ref, WriteBuffers.Position readPos) { long tailOffset = Ref.getOffset(ref); if (Ref.hasList(ref)) { long relativeOffset = (readPos == null) ? writeBuffers.unsafeReadNByteLong(tailOffset, 5) : writeBuffers.readNByteLong(tailOffset, 5, readPos); tailOffset += relativeOffset; } return tailOffset; }
referenceAbsoluteOffset, readPos); long relativeNextValueOffset = hashMapStore.writeBuffers.readNByteLong( KeyRef.AbsoluteOffset.byteLength, readPos); hashMapStore.writeBuffers.readNByteLong( RelativeOffset.byteLength, readPos); if (relativeNextValueOffset == 0) {
long relativeOffset = hashMap.writeBuffers.readNByteLong(firstOffset, 5, readPos); nextTailOffset = hashMap.writeBuffers.readNByteLong(offsetAfterListRecordKeyLen, 5, readPos); if (nextTailOffset <= 0) { throw new Error("Expecting a second value");
long relativeOffset = hashMap.writeBuffers.readNByteLong(firstOffset, 5, readPos); nextTailOffset = hashMap.writeBuffers.readNByteLong(offsetAfterListRecordKeyLen, 5, readPos); if (nextTailOffset <= 0) { throw new Error("Expecting a second value");
writeBuffers.readNByteLong( referenceAbsoluteOffset, RelativeOffset.byteLength, unsafeReadPos);
public long readNByteLong(long offset, int bytes) { return readNByteLong(offset, bytes, defaultReadPos); }
/** THIS METHOD IS NOT THREAD-SAFE. Use only at load time (or be mindful of thread safety). */ public long unsafeReadNByteLong(long offset, int bytes) { return readNByteLong(offset, bytes, unsafeReadPos); }
public int readInt(long offset) { return (int)readNByteLong(offset, 4); }
public long readNByteLong(long offset, int bytes) { return readNByteLong(offset, bytes, defaultReadPos); }
public long readNByteLong(long offset, int bytes) { return readNByteLong(offset, bytes, defaultReadPos); }
public int readInt(long offset) { return (int)readNByteLong(offset, 4); }
public int readInt(long offset) { return (int)readNByteLong(offset, 4); }
/** * @param ref Reference. * @return The offset to value and key length vlongs of the first record referenced by ref. */ private long getFirstRecordLengthsOffset(long ref, WriteBuffers.Position readPos) { long tailOffset = Ref.getOffset(ref); if (Ref.hasList(ref)) { long relativeOffset = (readPos == null) ? writeBuffers.readNByteLong(tailOffset, 5) : writeBuffers.readNByteLong(tailOffset, 5, readPos); tailOffset += relativeOffset; } return tailOffset; }
/** * Adds a newly-written record to existing list. * @param lrPtrOffset List record pointer offset. * @param tailOffset New record offset. */ private void addRecordToList(long lrPtrOffset, long tailOffset) { // Now, insert this record into the list. long prevHeadOffset = writeBuffers.readNByteLong(lrPtrOffset, 5); // LOG.info("Reading offset " + prevHeadOffset + " at " + lrPtrOffset); assert prevHeadOffset < tailOffset; // We replace an earlier element, must have lower offset. writeBuffers.writeFiveByteULong(lrPtrOffset, tailOffset); // LOG.info("Writing offset " + tailOffset + " at " + lrPtrOffset); writeBuffers.writeVLong(prevHeadOffset == 0 ? 0 : (tailOffset - prevHeadOffset)); }
int hashCode = (int)writeBuffers.readNByteLong(Ref.getOffset(oldRef) - writeBuffers.readVLong() - writeBuffers.readVLong() - 4, 4); int probeSteps = relocateKeyRef(newRefs, oldRef, hashCode);
long relativeOffset = hashMap.writeBuffers.readNByteLong(firstOffset, 5, readPos); nextTailOffset = hashMap.writeBuffers.readNByteLong(offsetAfterListRecordKeyLen, 5, readPos); if (nextTailOffset <= 0) { throw new Error("Expecting a second value");