diff options
Diffstat (limited to 'lib/metropolis/tc/hdb/ex.rb')
-rw-r--r-- | lib/metropolis/tc/hdb/ex.rb | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/lib/metropolis/tc/hdb/ex.rb b/lib/metropolis/tc/hdb/ex.rb new file mode 100644 index 0000000..5bc7f39 --- /dev/null +++ b/lib/metropolis/tc/hdb/ex.rb @@ -0,0 +1,18 @@ +module Metropolis::TC::HDB::EX + def self.extended(obj) + obj.instance_eval do + @wr_flags |= @rd_flags + @rd_flags = nil + @dbv.each { |(hdb, path)| + hdb.open(path, @wr_flags) or ex!(:open, hdb) + } + @ex_dbv = @dbv.map { |(hdb,_)| hdb } + end + end + + def reader(key) + yield @ex_dbv[key.hash % @nr_slots] + end + + alias_method :writer, :reader +end |