class Sparkey::Store

Attributes

filename[RW]
hash_reader[RW]
hash_writer[RW]
log_reader[RW]
log_writer[RW]

Public Class Methods

create(filename, compression_type = :compression_none, block_size = 1000) click to toggle source
# File lib/sparkey/store.rb, line 5
def self.create(filename, compression_type = :compression_none, block_size = 1000)
  store = new(filename)

  store.log_writer = Sparkey::LogWriter.new
  store.log_writer.create(filename, compression_type, block_size)

  store.log_reader = Sparkey::LogReader.new
  store.log_reader.open(filename)

  store.hash_writer = Sparkey::HashWriter.new
  store.hash_writer.create(filename)

  store.hash_reader = Sparkey::HashReader.new
  store.hash_reader.open(filename)

  store
end
new(filename) click to toggle source
# File lib/sparkey/store.rb, line 41
def initialize(filename)
  @filename = filename
end
open(filename) click to toggle source
# File lib/sparkey/store.rb, line 23
def self.open(filename)
  store = new(filename)

  store.log_writer = Sparkey::LogWriter.new
  store.log_writer.open(filename)

  store.log_reader = Sparkey::LogReader.new
  store.log_reader.open(filename)

  store.hash_writer = Sparkey::HashWriter.new
  store.hash_writer.create(filename)

  store.hash_reader = Sparkey::HashReader.new
  store.hash_reader.open(filename)

  store
end

Public Instance Methods

close() click to toggle source
# File lib/sparkey/store.rb, line 45
def close
  log_writer.close
  log_reader.close
  hash_reader.close
end
delete(key) click to toggle source
# File lib/sparkey/store.rb, line 85
def delete(key)
  log_writer.delete(key)
end
each(&block)
Alias for: each_from_hash
each_from_hash(&block) click to toggle source
# File lib/sparkey/store.rb, line 63
def each_from_hash(&block)
  iterator = Sparkey::HashIterator.new(hash_reader)
  typeless_block = ->(k, v, _){ block.call(k, v) }

  each_with_iterator(iterator, &typeless_block)

  iterator.close
end
Also aliased as: each
each_from_log(&block) click to toggle source
# File lib/sparkey/store.rb, line 73
def each_from_log(&block)
  iterator = Sparkey::LogIterator.new(log_reader)

  each_with_iterator(iterator, &block)

  iterator.close
end
flush() click to toggle source
# File lib/sparkey/store.rb, line 89
def flush
  log_writer.flush

  # Reset to flush cached headers
  log_reader.open(filename)
  hash_writer.create(filename)
  hash_reader.open(filename)
end
get(key) click to toggle source
# File lib/sparkey/store.rb, line 55
def get(key)
  iterator = hash_reader.seek(key)

  return unless iterator.active?

  iterator.get_value
end
put(key, value) click to toggle source
# File lib/sparkey/store.rb, line 81
def put(key, value)
  log_writer.put(key, value)
end
size() click to toggle source
# File lib/sparkey/store.rb, line 51
def size
  hash_reader.entry_count
end

Private Instance Methods

each_with_iterator(iterator) { |get_key, get_value, type| ... } click to toggle source
# File lib/sparkey/store.rb, line 99
def each_with_iterator(iterator)
  loop do
    iterator.next

    break unless iterator.active?

    yield iterator.get_key, iterator.get_value, iterator.type
  end
end