Class: Roma::Storage::DbmStorage

Inherits:
BasicStorage show all
Defined in:
lib/roma/storage/dbm_storage.rb

Constant Summary

Constants inherited from BasicStorage

BasicStorage::PACK_HEADER_TEMPLATE, BasicStorage::PACK_TEMPLATE

Instance Attribute Summary

Attributes inherited from BasicStorage

#cleanup_regexp, #dbs, #divnum, #do_each_vn_dump, #each_clean_up_sleep, #each_vn_dump_sleep, #each_vn_dump_sleep_count, #error_message, #ext_name, #hdb, #hdiv, #logic_clock_expire, #option, #st_class, #storage_path, #vn_list

Instance Method Summary collapse

Methods inherited from BasicStorage

#add, #append, #cache_file_name, #cas, #close_log, #closedb, #db_get, #db_put, #decr, #delete, #dump, #each_cache_by_keys, #each_cache_dump_pack, #each_hdb_dump, #each_vn_dump, #flush_db, #get, #get_context, #get_keys_in_cache, #get_logfile_list, #get_raw, #get_raw2, #get_stat, #incr, #load, #load_stream_dump, #load_stream_dump_for_cachecleaning, #open_log, #opendb, #out, #out_cache, #prepend, #rdelete, #replace, #rset, #set, #set_db_stat, #set_expt, #stop_clean_up, #true_length, #write_log

Constructor Details

#initializeDbmStorage

Returns a new instance of DbmStorage.



16
17
18
19
# File 'lib/roma/storage/dbm_storage.rb', line 16

def initialize
  super
  @ext_name = 'dbm'
end

Instance Method Details

#each_clean_up(t, vnhash) ⇒ Object



21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
# File 'lib/roma/storage/dbm_storage.rb', line 21

def each_clean_up(t, vnhash)
  @do_clean_up = true
  nt = Time.now.to_i
  @hdb.each{ |hdb|
    delkey = []
    hdb.each{ |k, v|
      return unless @do_clean_up
      vn, last, clk, expt = unpack_header(v)
      vn_stat = vnhash[vn]
      if vn_stat == :primary && ( (expt != 0 && nt > expt) || (expt == 0 && t > last) )
        delkey << [vn, k, v]
      elsif vn_stat == nil && t > last
        delkey << [vn, k, v]
      end
      sleep @each_clean_up_sleep
    }
    delkey.each{ |vn, k, v|
      yield k, vn
      hdb.out(k) if hdb.get(k) == v
    }
  }
end