Method: Bitcask::HintFile#read

Defined in:
lib/bitcask/hint_file.rb

#readObject

Returns [timestamp, key, value_pos, value_size] read from the current offset, and advances to the next.

Can raise Bitcask::ChecksumError



60
61
62
63
64
65
66
67
68
69
70
71
72
73
# File 'lib/bitcask/hint_file.rb', line 60

def read
  # Parse header
  header = @file.read(18) or return
  tstamp, ksz, value_sz, value_pos1, value_pos2 = header.unpack "NnNNN"

  # value_pos is an 8 byte big-endian number...
  # For reference, reverse is [value_pos >> 32, value & 0xFFFFFFFF].pack("NN")
  value_pos = (value_pos1 << 32) | value_pos2

  # Read key
  key = @file.read ksz

  Entry.new tstamp, value_sz, value_pos, key
end