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