diff options
Diffstat (limited to 'lib/metropolis/tdb/multi.rb')
-rw-r--r-- | lib/metropolis/tdb/multi.rb | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/lib/metropolis/tdb/multi.rb b/lib/metropolis/tdb/multi.rb new file mode 100644 index 0000000..b22e63b --- /dev/null +++ b/lib/metropolis/tdb/multi.rb @@ -0,0 +1,19 @@ +# -*- encoding: binary -*- +module Metropolis::TDB::Multi + def self.extended(obj) + obj.instance_eval do + @dbv = (0...@nr_slots).to_a.map do |slot| + path = sprintf(@path_pattern, slot) + ::TDB.new(path, @tdb_opts) + end + end + end + + def db(key, &block) + yield @dbv[key.hash % @nr_slots] + end + + def close! + @dbv.each { |tdb| tdb.close } + end +end |