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