class Roma::Storage::DbmStorage

Public Class Methods

new() click to toggle source
Calls superclass method Roma::Storage::BasicStorage::new
   # File lib/roma/storage/dbm_storage.rb
16 def initialize
17   super
18   @ext_name = 'dbm'
19 end

Public Instance Methods

each_clean_up(t, vnhash) { |k, vn| ... } click to toggle source
   # File lib/roma/storage/dbm_storage.rb
21 def each_clean_up(t, vnhash)
22   @do_clean_up = true
23   nt = Time.now.to_i
24   @hdb.each{ |hdb|
25     delkey = []
26     hdb.each{ |k, v|
27       return unless @do_clean_up
28       vn, last, clk, expt = unpack_header(v)
29       vn_stat = vnhash[vn]
30       if vn_stat == :primary && ( (expt != 0 && nt > expt) || (expt == 0 && t > last) )
31         delkey << [vn, k, v]
32       elsif vn_stat == nil && t > last
33         delkey << [vn, k, v]
34       end
35       sleep @each_clean_up_sleep
36     }
37     delkey.each{ |vn, k, v|
38       yield k, vn
39       hdb.out(k) if hdb.get(k) == v
40     }
41   }
42 end

Private Instance Methods

close_db(hdb) click to toggle source
   # File lib/roma/storage/dbm_storage.rb
53 def close_db(hdb); hdb.close; end
open_db(fname) click to toggle source
   # File lib/roma/storage/dbm_storage.rb
46 def open_db(fname)
47   hdb = GDBM::open(fname,0666)
48   raise RuntimeError.new("dbm open error.") unless hdb
49   hdb.extend(Roma::Storage::GDBM_Ext)
50   return hdb
51 end