Class: Sparkey::Store

Inherits:
Object
  • Object
show all
Defined in:
lib/sparkey/store.rb

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(filename) ⇒ Store

Returns a new instance of Store.



41
42
43
# File 'lib/sparkey/store.rb', line 41

def initialize(filename)
  @filename = filename
end

Instance Attribute Details

#filenameObject

Returns the value of attribute filename.



2
3
4
# File 'lib/sparkey/store.rb', line 2

def filename
  @filename
end

#hash_readerObject

Returns the value of attribute hash_reader.



2
3
4
# File 'lib/sparkey/store.rb', line 2

def hash_reader
  @hash_reader
end

#hash_writerObject

Returns the value of attribute hash_writer.



2
3
4
# File 'lib/sparkey/store.rb', line 2

def hash_writer
  @hash_writer
end

#log_readerObject

Returns the value of attribute log_reader.



2
3
4
# File 'lib/sparkey/store.rb', line 2

def log_reader
  @log_reader
end

#log_writerObject

Returns the value of attribute log_writer.



2
3
4
# File 'lib/sparkey/store.rb', line 2

def log_writer
  @log_writer
end

Class Method Details

.create(filename, compression_type = :compression_none, block_size = 1000) ⇒ Object



5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# 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

.open(filename) ⇒ Object



23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
# 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

Instance Method Details

#closeObject



45
46
47
48
49
# File 'lib/sparkey/store.rb', line 45

def close
  log_writer.close
  log_reader.close
  hash_reader.close
end

#delete(key) ⇒ Object



85
86
87
# File 'lib/sparkey/store.rb', line 85

def delete(key)
  log_writer.delete(key)
end

#each_from_hash(&block) ⇒ Object Also known as: each



63
64
65
66
67
68
69
70
# 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

#each_from_log(&block) ⇒ Object



73
74
75
76
77
78
79
# 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

#flushObject



89
90
91
92
93
94
95
96
# 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) ⇒ Object



55
56
57
58
59
60
61
# 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) ⇒ Object



81
82
83
# File 'lib/sparkey/store.rb', line 81

def put(key, value)
  log_writer.put(key, value)
end

#sizeObject



51
52
53
# File 'lib/sparkey/store.rb', line 51

def size
  hash_reader.entry_count
end