Module: Persist::TSVAdapter
- Included in:
- CDBAdapter, FWTAdapter, KCAdapter, LMDBAdapter, PKIAdapter, TCAdapter
- Defined in:
- lib/rbbt/persist/tsv/adapter.rb
Constant Summary collapse
- MAX_CHAR =
255.chr
Instance Attribute Summary collapse
-
#closed ⇒ Object
Returns the value of attribute closed.
-
#mutex ⇒ Object
Returns the value of attribute mutex.
-
#persistence_path ⇒ Object
Returns the value of attribute persistence_path.
-
#writable ⇒ Object
Returns the value of attribute writable.
Instance Method Summary collapse
- #[](*args) ⇒ Object
- #[]=(*args) ⇒ Object
- #close(*args) ⇒ Object
- #closed? ⇒ Boolean
- #collect ⇒ Object
- #delete(key) ⇒ Object
- #each(*args, &block) ⇒ Object
- #get_prefix(key) ⇒ Object
- #include?(*args) ⇒ Boolean
- #keys(*args) ⇒ Object
- #lock ⇒ Object
- #lock_and_close ⇒ Object
- #merge!(hash) ⇒ Object
- #prefix(key) ⇒ Object
- #range(*args) ⇒ Object
- #read(*args) ⇒ Object
- #read? ⇒ Boolean
- #read_and_close ⇒ Object
- #read_lock ⇒ Object
- #size(*args) ⇒ Object
- #values_at(*keys) ⇒ Object
- #write(*args) ⇒ Object
- #write? ⇒ Boolean
- #write_and_close ⇒ Object
- #write_and_read ⇒ Object
- #write_lock ⇒ Object
Instance Attribute Details
#closed ⇒ Object
Returns the value of attribute closed.
4 5 6 |
# File 'lib/rbbt/persist/tsv/adapter.rb', line 4 def closed @closed end |
#mutex ⇒ Object
Returns the value of attribute mutex.
4 5 6 |
# File 'lib/rbbt/persist/tsv/adapter.rb', line 4 def mutex @mutex end |
#persistence_path ⇒ Object
Returns the value of attribute persistence_path.
4 5 6 |
# File 'lib/rbbt/persist/tsv/adapter.rb', line 4 def persistence_path @persistence_path end |
#writable ⇒ Object
Returns the value of attribute writable.
4 5 6 |
# File 'lib/rbbt/persist/tsv/adapter.rb', line 4 def writable @writable end |
Instance Method Details
#[](*args) ⇒ Object
186 187 188 189 190 |
# File 'lib/rbbt/persist/tsv/adapter.rb', line 186 def [](*args) self.read_lock do super(*args) #- TSV::ENTRY_KEYS.to_a end end |
#[]=(*args) ⇒ Object
192 193 194 195 196 |
# File 'lib/rbbt/persist/tsv/adapter.rb', line 192 def []=(*args) self.write_lock do super(*args) #- TSV::ENTRY_KEYS.to_a end end |
#close(*args) ⇒ Object
32 33 34 35 36 37 38 39 |
# File 'lib/rbbt/persist/tsv/adapter.rb', line 32 def close(*args) begin super(*args) @closed = true rescue NoMethodError end self end |
#closed? ⇒ Boolean
12 13 14 |
# File 'lib/rbbt/persist/tsv/adapter.rb', line 12 def closed? @closed end |
#collect ⇒ Object
229 230 231 232 233 234 235 236 237 238 239 |
# File 'lib/rbbt/persist/tsv/adapter.rb', line 229 def collect res = [] each do |key, value| res << if block_given? yield key, value else [key, value] end end res end |
#delete(key) ⇒ Object
48 49 50 |
# File 'lib/rbbt/persist/tsv/adapter.rb', line 48 def delete(key) out(key) end |
#each(*args, &block) ⇒ Object
223 224 225 226 227 |
# File 'lib/rbbt/persist/tsv/adapter.rb', line 223 def each(*args, &block) self.read_lock do super(*args, &block) end end |
#get_prefix(key) ⇒ Object
211 212 213 214 |
# File 'lib/rbbt/persist/tsv/adapter.rb', line 211 def get_prefix(key) keys = prefix(key) select(:key => keys) end |
#include?(*args) ⇒ Boolean
180 181 182 183 184 |
# File 'lib/rbbt/persist/tsv/adapter.rb', line 180 def include?(*args) self.read_lock do super(*args) #- TSV::ENTRY_KEYS.to_a end end |
#keys(*args) ⇒ Object
198 199 200 201 202 |
# File 'lib/rbbt/persist/tsv/adapter.rb', line 198 def keys(*args) self.read_lock do super(*args) end end |
#lock ⇒ Object
52 53 54 55 56 57 58 59 60 61 62 63 |
# File 'lib/rbbt/persist/tsv/adapter.rb', line 52 def lock return yield if @locked lock_filename = Persist.persistence_path(persistence_path, {:dir => TSV.lock_dir}) Misc.lock(lock_filename) do begin @locked = true yield ensure @locked = false end end end |
#lock_and_close ⇒ Object
65 66 67 68 69 70 71 72 73 |
# File 'lib/rbbt/persist/tsv/adapter.rb', line 65 def lock_and_close lock do begin yield ensure close end end end |
#merge!(hash) ⇒ Object
168 169 170 171 172 |
# File 'lib/rbbt/persist/tsv/adapter.rb', line 168 def merge!(hash) hash.each do |key,values| self[key] = values end end |
#prefix(key) ⇒ Object
205 206 207 208 209 |
# File 'lib/rbbt/persist/tsv/adapter.rb', line 205 def prefix(key) self.read_lock do range(key, 1, key + MAX_CHAR, 1) end end |
#range(*args) ⇒ Object
174 175 176 177 178 |
# File 'lib/rbbt/persist/tsv/adapter.rb', line 174 def range(*args) self.read_lock do super(*args) end end |
#read(*args) ⇒ Object
41 42 43 44 45 46 |
# File 'lib/rbbt/persist/tsv/adapter.rb', line 41 def read(*args) begin super(*args) rescue NoMethodError end end |
#read? ⇒ Boolean
20 21 22 |
# File 'lib/rbbt/persist/tsv/adapter.rb', line 20 def read? ! (write? || closed?) end |
#read_and_close ⇒ Object
114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 |
# File 'lib/rbbt/persist/tsv/adapter.rb', line 114 def read_and_close if read? || write? begin return yield ensure close unless @locked end end lock do read true if closed? || ! read? begin yield ensure close end end end |
#read_lock ⇒ Object
133 134 135 136 137 138 139 140 141 142 143 144 145 146 |
# File 'lib/rbbt/persist/tsv/adapter.rb', line 133 def read_lock read if closed? if read? return yield end lock do close read true begin yield end end end |
#size(*args) ⇒ Object
217 218 219 220 221 |
# File 'lib/rbbt/persist/tsv/adapter.rb', line 217 def size(*args) self.read_lock do super(*args) end end |
#values_at(*keys) ⇒ Object
241 242 243 244 245 246 247 |
# File 'lib/rbbt/persist/tsv/adapter.rb', line 241 def values_at(*keys) self.read_lock do keys.collect do |k| self[k] end end end |
#write(*args) ⇒ Object
24 25 26 27 28 29 30 |
# File 'lib/rbbt/persist/tsv/adapter.rb', line 24 def write(*args) begin super(*args) @writable = true rescue NoMethodError end end |
#write? ⇒ Boolean
16 17 18 |
# File 'lib/rbbt/persist/tsv/adapter.rb', line 16 def write? @writable end |
#write_and_close ⇒ Object
94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 |
# File 'lib/rbbt/persist/tsv/adapter.rb', line 94 def write_and_close if write? begin return yield ensure close unless @locked end end lock do write(true) if closed? || ! write? res = begin yield ensure close end res end end |
#write_and_read ⇒ Object
75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 |
# File 'lib/rbbt/persist/tsv/adapter.rb', line 75 def write_and_read if write? begin return yield ensure read end end lock do write(true) if closed? || !write? begin yield ensure read end end end |
#write_lock ⇒ Object
148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 |
# File 'lib/rbbt/persist/tsv/adapter.rb', line 148 def write_lock write if closed? if write? begin return yield ensure close end end lock do close write true begin yield end end end |