Class: LS4::TokyoTyrantMDS
Defined Under Namespace
Classes: HADB
Constant Summary collapse
- COL_PK =
''
- COL_KEY =
'_key'
- COL_VTIME =
'_time'
- COL_RSID =
'_rsid'
- COL_VNAME =
'_vname'
- COL_REMOVED =
'_removed'
- COLS_RESERVED =
[COL_PK, COL_KEY, COL_VTIME, COL_RSID, COL_VNAME, COL_REMOVED]
- COLS_REQUIRED =
[COL_PK, COL_KEY, COL_VTIME, COL_RSID]
Class Method Summary collapse
Instance Method Summary collapse
- #add(key, attrs = {}, vname = nil, &cb) ⇒ Object
- #close ⇒ Object
- #delete(key, version = nil, &cb) ⇒ Object
- #get_attrs(key, version = nil, &cb) ⇒ Object
- #get_okey(key, version = nil, &cb) ⇒ Object
- #get_okey_attrs(key, version = nil, &cb) ⇒ Object
-
#initialize ⇒ TokyoTyrantMDS
constructor
A new instance of TokyoTyrantMDS.
- #open(expr) ⇒ Object
-
#remove(key, &cb) ⇒ Object
def merge_attrs(key, attrs, &cb) okey = update_impl(key) {|old_attrs| old_attrs.merge(attrs) } cb.call(okey, nil) rescue nil rescue cb.call(nil, $!) rescue nil end.
- #update_attrs(key, attrs, &cb) ⇒ Object
- #util_locate(key, &cb) ⇒ Object
Constructor Details
#initialize ⇒ TokyoTyrantMDS
Returns a new instance of TokyoTyrantMDS.
83 84 85 86 87 |
# File 'lib/ls4/service/mds_tt.rb', line 83 def initialize self.class.define_consts @random = Random.new @pid = Process.pid end |
Class Method Details
.define_consts ⇒ Object
34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 |
# File 'lib/ls4/service/mds_tt.rb', line 34 def self.define_consts unless const_defined?(:QRY) require 'tokyotyrant' const_set(:QRY, TokyoTyrant::RDBQRY) HADB.const_set(:TBL, TokyoTyrant::RDBTBL) HADB.const_set(:FATAL_ERROR, [ TokyoTyrant::RDB::EINVALID, TokyoTyrant::RDB::ENOHOST, TokyoTyrant::RDB::EREFUSED, TokyoTyrant::RDB::ESEND, TokyoTyrant::RDB::ERECV, TokyoTyrant::RDB::EMISC ]) end end |
Instance Method Details
#add(key, attrs = {}, vname = nil, &cb) ⇒ Object
147 148 149 150 151 152 |
# File 'lib/ls4/service/mds_tt.rb', line 147 def add(key, attrs={}, vname=nil, &cb) okey = add_impl(key, attrs, vname) cb.call(okey, nil) rescue nil rescue cb.call(nil, $!) rescue nil end |
#close ⇒ Object
106 107 108 |
# File 'lib/ls4/service/mds_tt.rb', line 106 def close @hadb.close end |
#delete(key, version = nil, &cb) ⇒ Object
200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 |
# File 'lib/ls4/service/mds_tt.rb', line 200 def delete(key, version=nil, &cb) map = get_impl(key, version, COLS_RESERVED) if map && !is_removed(map) okey = to_okey(map) pk = map[COL_PK] @hadb.write(key) {|rdb| rdb.delete(pk) } cb.call(okey, nil) rescue nil else cb.call(nil, nil) rescue nil end rescue cb.call(nil, $!) rescue nil end |
#get_attrs(key, version = nil, &cb) ⇒ Object
122 123 124 125 126 127 128 129 130 131 132 |
# File 'lib/ls4/service/mds_tt.rb', line 122 def get_attrs(key, version=nil, &cb) map = get_impl(key, version) if map && !is_removed(map) attrs = to_attrs(map) cb.call(attrs, nil) rescue nil else cb.call(nil, nil) rescue nil end rescue cb.call(nil, $!) rescue nil end |
#get_okey(key, version = nil, &cb) ⇒ Object
110 111 112 113 114 115 116 117 118 119 120 |
# File 'lib/ls4/service/mds_tt.rb', line 110 def get_okey(key, version=nil, &cb) map = get_impl(key, version, COLS_RESERVED) if map && !is_removed(map) okey = to_okey(map) cb.call(okey, nil) rescue nil else cb.call(nil, nil) rescue nil end rescue cb.call(nil, $!) rescue nil end |
#get_okey_attrs(key, version = nil, &cb) ⇒ Object
134 135 136 137 138 139 140 141 142 143 144 145 |
# File 'lib/ls4/service/mds_tt.rb', line 134 def get_okey_attrs(key, version=nil, &cb) map = get_impl(key, version) if map && !is_removed(map) okey = to_okey(map) attrs = to_attrs(map) cb.call([okey, attrs], nil) rescue nil else cb.call(nil, nil) rescue nil end rescue cb.call(nil, $!) rescue nil end |
#open(expr) ⇒ Object
102 103 104 |
# File 'lib/ls4/service/mds_tt.rb', line 102 def open(expr) @hadb = HADB.new(expr) end |
#remove(key, &cb) ⇒ Object
def merge_attrs(key, attrs, &cb) okey = update_impl(key) {|old_attrs| old_attrs.merge(attrs) } cb.call(okey, nil) rescue nil rescue cb.call(nil, $!) rescue nil end
172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 |
# File 'lib/ls4/service/mds_tt.rb', line 172 def remove(key, &cb) map = get_impl_head(key, COLS_REQUIRED) if map && !is_removed(map) okey = to_okey(map) # optional: inherit rsid rsid = map[COL_RSID].to_i # get current vtime later than old vtime vtime = get_current_vtime(map[COL_VTIME].to_i) remove_okey = new_okey(key, vtime, rsid) # insert pk = new_pk(map[COL_PK]) map = to_map({}, remove_okey, nil, true) @hadb.write(key) {|rdb| rdb.put(pk, map) } cb.call(okey, nil) rescue nil else cb.call(nil, nil) rescue nil end rescue cb.call(nil, $!) rescue nil end |
#update_attrs(key, attrs, &cb) ⇒ Object
154 155 156 157 158 159 160 161 |
# File 'lib/ls4/service/mds_tt.rb', line 154 def update_attrs(key, attrs, &cb) okey = update_impl(key) {|old_attrs| attrs } cb.call(okey, nil) rescue nil rescue cb.call(nil, $!) rescue nil end |
#util_locate(key, &cb) ⇒ Object
217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 |
# File 'lib/ls4/service/mds_tt.rb', line 217 def util_locate(key, &cb) array = @hadb.read(key) {|rdb| qry = QRY.new(rdb) qry.addcond(COL_KEY, QRY::QCSTREQ, key) qry.searchget(COLS_RESERVED) } array.reject! {|map| !is_valid_map(map) || is_removed(map) } array.map! {|map| [to_okey(map), map[COL_VNAME]] } cb.call(array, nil) rescue nil rescue cb.call(nil, $!) rescue nil end |