Module: Persist::LMDBAdapter
- Defined in:
- lib/rbbt/persist/tsv/lmdb.rb
Instance Attribute Summary collapse
-
#closed ⇒ Object
Returns the value of attribute closed.
-
#persistence_path ⇒ Object
Returns the value of attribute persistence_path.
Class Method Summary collapse
Instance Method Summary collapse
- #close ⇒ Object
- #closed? ⇒ Boolean
- #collect ⇒ Object
- #delete(key) ⇒ Object
- #each ⇒ Object
- #include?(key) ⇒ Boolean
- #keys ⇒ Object
- #merge!(hash) ⇒ Object
- #range(*args) ⇒ Object
- #read(force = false) ⇒ Object
- #read_and_close ⇒ Object
- #write(force = true) ⇒ Object
- #write? ⇒ Boolean
- #write_and_close ⇒ Object
- #write_and_read ⇒ Object
Instance Attribute Details
#closed ⇒ Object
Returns the value of attribute closed.
6 7 8 |
# File 'lib/rbbt/persist/tsv/lmdb.rb', line 6 def closed @closed end |
#persistence_path ⇒ Object
Returns the value of attribute persistence_path.
6 7 8 |
# File 'lib/rbbt/persist/tsv/lmdb.rb', line 6 def persistence_path @persistence_path end |
Class Method Details
.open(path, write) ⇒ Object
8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
# File 'lib/rbbt/persist/tsv/lmdb.rb', line 8 def self.open(path, write) database = CONNECTIONS[path] ||= begin dir = File.dirname(File.(path)) file = File.basename(path) env = LMDB.new(dir, :mapsize => 1024 * 10000) database = env.database file, :create => write database end database.extend Persist::LMDBAdapter unless Persist::LMDBAdapter === database database.persistence_path ||= path database end |
Instance Method Details
#close ⇒ Object
42 43 44 |
# File 'lib/rbbt/persist/tsv/lmdb.rb', line 42 def close self end |
#closed? ⇒ Boolean
38 39 40 |
# File 'lib/rbbt/persist/tsv/lmdb.rb', line 38 def closed? false end |
#collect ⇒ Object
67 68 69 70 71 72 73 74 75 76 77 78 79 |
# File 'lib/rbbt/persist/tsv/lmdb.rb', line 67 def collect res = [] cursor do |cursor| while pair = cursor.next res = if block_given? yield *pair else pair end end end res end |
#delete(key) ⇒ Object
81 82 83 |
# File 'lib/rbbt/persist/tsv/lmdb.rb', line 81 def delete(key) out(key) end |
#each ⇒ Object
58 59 60 61 62 63 64 65 |
# File 'lib/rbbt/persist/tsv/lmdb.rb', line 58 def each cursor do |cursor| while pair = cursor.next yield *pair end end self end |
#include?(key) ⇒ Boolean
34 35 36 |
# File 'lib/rbbt/persist/tsv/lmdb.rb', line 34 def include?(key) self.send(:[], key, true) end |
#keys ⇒ Object
24 25 26 27 28 29 30 31 32 |
# File 'lib/rbbt/persist/tsv/lmdb.rb', line 24 def keys keys = [] cursor do |cursor| while p = cursor.next keys << p.first end end keys end |
#merge!(hash) ⇒ Object
121 122 123 124 125 |
# File 'lib/rbbt/persist/tsv/lmdb.rb', line 121 def merge!(hash) hash.each do |key,values| self[key] = values end end |
#range(*args) ⇒ Object
128 129 130 |
# File 'lib/rbbt/persist/tsv/lmdb.rb', line 128 def range(*args) super(*args) - TSV::ENTRY_KEYS.to_a end |
#read(force = false) ⇒ Object
46 47 48 |
# File 'lib/rbbt/persist/tsv/lmdb.rb', line 46 def read(force = false) self end |
#read_and_close ⇒ Object
111 112 113 114 115 116 117 118 119 |
# File 'lib/rbbt/persist/tsv/lmdb.rb', line 111 def read_and_close read if @closed or write? res = begin yield ensure close end res end |
#write(force = true) ⇒ Object
50 51 52 |
# File 'lib/rbbt/persist/tsv/lmdb.rb', line 50 def write(force = true) self end |
#write? ⇒ Boolean
54 55 56 |
# File 'lib/rbbt/persist/tsv/lmdb.rb', line 54 def write? @writable end |
#write_and_close ⇒ Object
98 99 100 101 102 103 104 105 106 107 108 109 |
# File 'lib/rbbt/persist/tsv/lmdb.rb', line 98 def write_and_close lock_filename = Persist.persistence_path(persistence_path, {:dir => TSV.lock_dir}) Misc.lock(lock_filename) do write if @closed or not write? res = begin yield ensure close end res end end |
#write_and_read ⇒ Object
85 86 87 88 89 90 91 92 93 94 95 96 |
# File 'lib/rbbt/persist/tsv/lmdb.rb', line 85 def write_and_read lock_filename = Persist.persistence_path(persistence_path, {:dir => TSV.lock_dir}) Misc.lock(lock_filename) do write if @closed or not write? res = begin yield ensure read end res end end |