about summary refs log tree commit
path: root/lib/metropolis/tc/hdb/ex.rb
diff options
context:
space:
mode:
Diffstat (limited to 'lib/metropolis/tc/hdb/ex.rb')
-rw-r--r--lib/metropolis/tc/hdb/ex.rb18
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