class Roma::Storage::RubyHashStorage
Public Instance Methods
each_clean_up(t, vnhash) { |k, vn| ... }
click to toggle source
# File lib/roma/storage/rh_storage.rb 26 def each_clean_up(t, vnhash) 27 @do_clean_up = true 28 nt = Time.now.to_i 29 @hdb.each{ |hdb| 30 keys = hdb.keys 31 keys.each{ |k| 32 v = hdb[k] 33 return unless @do_clean_up 34 vn, last, clk, expt = unpack_header(v) 35 vn_stat = vnhash[vn] 36 if vn_stat == :primary && ( (expt != 0 && nt > expt) || (expt == 0 && t > last) ) 37 yield k, vn 38 hdb.out(k) if hdb.get(k) == v 39 elsif vn_stat == nil && t > last 40 yield k, vn 41 hdb.out(k) if hdb.get(k) == v 42 end 43 sleep @each_clean_up_sleep 44 } 45 } 46 end
each_hdb_dump(i,except_vnh = nil) { |[vn, last, clk, expt, length, k, length, val].pack("NNNNNa#{length}Na#{length}")| ... }
click to toggle source
# File lib/roma/storage/rh_storage.rb 66 def each_hdb_dump(i,except_vnh = nil) 67 count = 0 68 keys = @hdb[i].keys 69 keys.each{|k| 70 v = @hdb[i][k] 71 vn, last, clk, expt, val = unpack_data(v) 72 if except_vnh && except_vnh.key?(vn) || Time.now.to_i > expt 73 count += 1 74 sleep @each_vn_dump_sleep if count % @each_vn_dump_sleep_count == 0 75 else 76 yield [vn, last, clk, expt, k.length, k, val.length, val].pack("NNNNNa#{k.length}Na#{val.length}") 77 sleep @each_vn_dump_sleep 78 end 79 } 80 end
each_unpacked_db(target_vn, db) { |vn, last, clk, expt, k, val| ... }
click to toggle source
# File lib/roma/storage/rh_storage.rb 48 def each_unpacked_db(target_vn, db) 49 count = 0 50 tn = Time.now.to_i 51 keys = db[@hdiv[target_vn]].keys 52 keys.each do |k| 53 v = db[@hdiv[target_vn]][k] 54 vn, last, clk, expt, val = unpack_data(v) 55 if vn != target_vn || (expt != 0 && tn > expt) 56 count += 1 57 sleep @each_vn_dump_sleep if count % @each_vn_dump_sleep_count == 0 58 next 59 end 60 yield vn, last, clk, expt, k, val 61 end 62 end
get_vnode_hash(vn)
click to toggle source
Create vnode dump.
# File lib/roma/storage/rh_storage.rb 83 def get_vnode_hash(vn) 84 buf = {} 85 count = 0 86 hdb = @hdb[@hdiv[vn]] 87 keys = hdb.keys 88 keys.each{ |k| 89 v = hdb[k] 90 count += 1 91 sleep @each_vn_dump_sleep if count % @each_vn_dump_sleep_count == 0 92 dat = unpack_data(v) #v.unpack('NNNN') 93 buf[k] = v if dat[0] == vn 94 } 95 return buf 96 end
opendb()
click to toggle source
# File lib/roma/storage/rh_storage.rb 16 def opendb 17 create_div_hash 18 @divnum.times do |i| 19 @hdb[i] = open_db(nil) 20 @hdbc[i] = nil 21 @dbs[i] = :normal 22 end 23 end
Private Instance Methods
close_db(hdb)
click to toggle source
# File lib/roma/storage/rh_storage.rb 109 def close_db(hdb); end
open_db(fname)
click to toggle source
# File lib/roma/storage/rh_storage.rb 103 def open_db(fname) 104 hdb = {} 105 hdb.extend(Roma::Storage::RH_Ext) 106 return hdb 107 end