lib/sparkey/store.rb in sparkey-1.0.0 vs lib/sparkey/store.rb in sparkey-1.1.0

- old
+ new

@@ -47,46 +47,36 @@ log_reader.close hash_reader.close end def size - hash_reader.size + hash_reader.entry_count end def get(key) iterator = hash_reader.seek(key) + return unless iterator.active? + iterator.get_value end - def each_from_hash - log_reader = hash_reader.log_reader - iterator = Sparkey::LogIterator.new(log_reader, hash_reader) + def each_from_hash(&block) + iterator = Sparkey::HashIterator.new(hash_reader) + typeless_block = ->(k, v, _){ block.call(k, v) } - loop do - iterator.hash_next + each_with_iterator(iterator, &typeless_block) - break unless iterator.active? - - yield iterator.get_key, iterator.get_value - end - iterator.close end alias_method :each, :each_from_hash - def each_from_log + def each_from_log(&block) iterator = Sparkey::LogIterator.new(log_reader) - loop do - iterator.next + each_with_iterator(iterator, &block) - break unless iterator.active? - - yield iterator.get_key, iterator.get_value - end - iterator.close end def put(key, value) log_writer.put(key, value) @@ -95,14 +85,24 @@ def delete(key) log_writer.delete(key) end def flush - yield self if block_given? - log_writer.flush - # Reset the hash headers + # Reset to flush cached headers + log_reader.open(filename) hash_writer.create(filename) hash_reader.open(filename) + end + + private + def each_with_iterator(iterator) + loop do + iterator.next + + break unless iterator.active? + + yield iterator.get_key, iterator.get_value, iterator.type + end end end