Class: Rubcask::MergeDirectory

Inherits:
Object
  • Object
show all
Defined in:
lib/rubcask/merge_directory.rb

Overview

A temporary directory that is used during the merge operation. You probably should not use this class outside of this context.

See Also:

Instance Method Summary collapse

Constructor Details

#initialize(dir, max_id_ref:, config: Config.new) ⇒ MergeDirectory

Returns a new instance of MergeDirectory.



10
11
12
13
14
15
16
17
18
# File 'lib/rubcask/merge_directory.rb', line 10

def initialize(dir, max_id_ref:, config: Config.new)
  @dir = dir
  @config = config
  @max_id = max_id_ref

  @data_files = []

  create_new_file!
end

Instance Method Details

#append(entry) ⇒ Object



20
21
22
23
24
25
26
27
28
29
30
# File 'lib/rubcask/merge_directory.rb', line 20

def append(entry)
  value_pos = active.write_pos
  active.append(entry)
  value_size = active.write_pos
  @active_hints[entry.key] = HintEntry.new(entry.expire_timestamp, entry.key, value_pos, value_size)

  if active.write_pos >= config.max_file_size
    prepare_old_file!
    create_new_file!
  end
end

#closeObject



32
33
34
35
36
37
38
# File 'lib/rubcask/merge_directory.rb', line 32

def close
  if active.write_pos == 0
    File.delete(active.path)
  else
    prepare_old_file!
  end
end