Class: Roma::Client::RomaClient
- Inherits:
-
Object
- Object
- Roma::Client::RomaClient
- Defined in:
- lib/roma/client/rclient.rb
Overview
Class to access ROMA .
Constant Summary collapse
- @@timeout =
ROMA server connect timeout .
5
Instance Attribute Summary collapse
-
#default_hash_name ⇒ Object
Returns the value of attribute default_hash_name.
-
#retry_count_read ⇒ Object
Returns the value of attribute retry_count_read.
-
#retry_count_write ⇒ Object
Returns the value of attribute retry_count_write.
-
#rttable ⇒ Object
Returns the value of attribute rttable.
-
#sender ⇒ Object
writeonly
Sets the attribute sender.
Instance Method Summary collapse
-
#[](key) ⇒ Object
Get value from ROMA .
-
#[]=(key, value) ⇒ Object
Set value to ROMA .
-
#add(key, val, expt = 0, raw = false) ⇒ Object
Add value to ROMA .
-
#append(key, val, expt = 0) ⇒ Object
Append value to exists string .
-
#cas(key, expt = 0, raw = false) ⇒ Object
Compare And Swap value .
-
#decr(key, val = 1) ⇒ Object
decrement value .
-
#delete(key) ⇒ Object
Delete value .
- #flush_all ⇒ Object
-
#get(key, raw = false) ⇒ Object
get value.
-
#gets(keys, raw = false) ⇒ Object
get values .
-
#incr(key, val = 1) ⇒ Object
increment value .
-
#initialize(ini_nodes, plugin_modules = nil, start_sync_routing_proc = true) ⇒ RomaClient
constructor
ROMA client constractor .
- #make_rttable(node) ⇒ Object
-
#out(key) ⇒ Object
Delete value completely .
-
#prepend(key, val, expt = 0) ⇒ Object
Prepend value to exists string .
-
#replace(key, val, expt = 0, raw = false) ⇒ Object
Add value to ROMA .
- #rttable_last_update ⇒ Object
-
#set(key, val, expt = 0, raw = false) ⇒ Object
Set value to ROMA .
- #stats ⇒ Object
- #update_rttable(nodes = self.rttable.nodes) ⇒ Object
- #verbosity ⇒ Object
- #version ⇒ Object
Constructor Details
#initialize(ini_nodes, plugin_modules = nil, start_sync_routing_proc = true) ⇒ RomaClient
ROMA client constractor .
- ini_nodes
-
ROMA nodes array
- plugin_modules
-
set plugin modules if you use .
27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
# File 'lib/roma/client/rclient.rb', line 27 def initialize(ini_nodes,plugin_modules = nil, start_sync_routing_proc = true) @retry_count_write = 10 @retry_count_read = 5 @default_hash_name = 'roma' if plugin_modules plugin_modules.each do|plugin| self.extend plugin end end init_sender update_rttable(ini_nodes.map{|n| n.sub(':','_')}) init_sync_routing_proc if start_sync_routing_proc end |
Instance Attribute Details
#default_hash_name ⇒ Object
Returns the value of attribute default_hash_name.
21 22 23 |
# File 'lib/roma/client/rclient.rb', line 21 def default_hash_name @default_hash_name end |
#retry_count_read ⇒ Object
Returns the value of attribute retry_count_read.
20 21 22 |
# File 'lib/roma/client/rclient.rb', line 20 def retry_count_read @retry_count_read end |
#retry_count_write ⇒ Object
Returns the value of attribute retry_count_write.
19 20 21 |
# File 'lib/roma/client/rclient.rb', line 19 def retry_count_write @retry_count_write end |
#rttable ⇒ Object
Returns the value of attribute rttable.
17 18 19 |
# File 'lib/roma/client/rclient.rb', line 17 def rttable @rttable end |
#sender=(value) ⇒ Object
Sets the attribute sender
18 19 20 |
# File 'lib/roma/client/rclient.rb', line 18 def sender=(value) @sender = value end |
Instance Method Details
#[](key) ⇒ Object
Get value from ROMA .
- key
-
key for roma.
returen
value sotored roma .
If key don't exit ROMA, return nil .
If coneect error, throw Exception .
112 113 114 |
# File 'lib/roma/client/rclient.rb', line 112 def [](key) get(key) end |
#[]=(key, value) ⇒ Object
Set value to ROMA . please see set method .
102 103 104 |
# File 'lib/roma/client/rclient.rb', line 102 def []=(key, value) set(key, value) end |
#add(key, val, expt = 0, raw = false) ⇒ Object
Add value to ROMA .
If same key exists in ROMA, this method don’t overwrite value and return NOT_STORED .
- key
-
key for store .
- value
-
store value .
- exp
-
expire seconds .
- raw
-
You set this value true, value isn’t marshaled .
- return
-
return follow set status .
-
If method is success, return STORED .
-
If same key exists in ROMA, return NOT_STORED .
-
If server error, return SERVER_ERROR .
If socket error occured, throw Exception .
If socket timeout occured, throw TimeoutError .
156 157 158 159 |
# File 'lib/roma/client/rclient.rb', line 156 def add(key, val, expt = 0, raw = false) val = Marshal.dump(val) unless raw sender(:oneline_receiver, key, val, "add %s 0 %d %d", expt.to_i, val.length) end |
#append(key, val, expt = 0) ⇒ Object
Append value to exists string .
If same key exists in ROMA, this method append value . If same key doesn’t exist in ROMA this method don’t store value and return NOT_STORE .
- key
-
key for append .
- value
-
append value .
- exp
-
expire seconds .
- return
-
return follow set status .
-
If method is success, return STORED .
-
If same key exists in ROMA, return NOT_STORED .
-
If server error, return SERVER_ERROR .
If socket error occured, throw Exception .
If socket timeout occured, throw TimeoutError .
203 204 205 |
# File 'lib/roma/client/rclient.rb', line 203 def append(key, val, expt = 0) sender(:oneline_receiver, key, val, "append %s 0 %d %d", expt.to_i, val.length) end |
#cas(key, expt = 0, raw = false) ⇒ Object
Compare And Swap value .
- key
-
key for cas .
- value
-
store value .
- exp
-
expire seconds .
- return
-
return follow set status .
-
If method is success, return STORED .
-
If method cannot update value, return EXISTS .
-
If key doesn’t exist in ROMA, this method return NOT_FOUND.
-
If server error, return SERVER_ERROR .
If socket error occured, throw Exception .
If socket timeout occured, throw TimeoutError .
244 245 246 247 248 249 250 251 252 253 |
# File 'lib/roma/client/rclient.rb', line 244 def cas(key, expt = 0, raw = false) raise "A block is required" unless block_given? (val, casid) = gets_with_casid(key, raw) return "NOT_FOUND" unless val updated = yield val val = raw ? updated : Marshal.dump(updated) sender(:oneline_receiver, key, val, "cas %s 0 %d %d %s", expt.to_i, val.length, casid) end |
#decr(key, val = 1) ⇒ Object
decrement value .
- key
-
key for decremental .
- val
-
decremental value .
- return
-
Fixnum decrementaled value .
If same key doesn’t exist in ROMA, return NOT_FOUND .
If socket error occured, throw Exception .
If socket timeout occured, throw TimeoutError .
374 375 376 377 378 |
# File 'lib/roma/client/rclient.rb', line 374 def decr(key, val = 1) ret = sender(:oneline_receiver, key, nil, "decr %s %d", val.to_i) return ret if ret =~ /\D/ ret.to_i end |
#delete(key) ⇒ Object
Delete value .
- key
-
key for delete .
- return
-
return follow set status .
-
If method is success, return DELETED .
-
If same key doesn’t exist in ROMA, return NOT_FOUND .
-
If server error, return SERVER_ERROR .
If socket error occured, throw Exception .
If socket timeout occured, throw TimeoutError .
267 268 269 |
# File 'lib/roma/client/rclient.rb', line 267 def delete(key) sender(:oneline_receiver, key, nil, "delete %s") end |
#flush_all ⇒ Object
341 342 343 344 |
# File 'lib/roma/client/rclient.rb', line 341 def flush_all() raise RuntimeError.new("Unsupported yet") # TODO @sender.send_flush_all_command end |
#get(key, raw = false) ⇒ Object
get value
- key
-
key for get .
- raw
-
If you set this value true, value isn’t Marshal.load value .
- return
-
return stored value in ROMA .
If key doesn’t exist in ROMA, this method return nil .
If socket error occured, throw Exception .
If socket timeout occured, throw TimeoutError .
302 303 304 305 306 307 |
# File 'lib/roma/client/rclient.rb', line 302 def get(key, raw = false) val = sender(:value_list_receiver, key, nil, "get %s")[0] return nil if val.nil? val = Marshal.load(val) unless raw val end |
#gets(keys, raw = false) ⇒ Object
get values .
- keys
-
key array for get .
- raw
-
If you set this value true, value isn’t Marshal.load value .
- return
-
return key and sotored value hash .
If all key doesn’t exist in ROMA, return empty hash . If some key doesn’t exist in ROMA, return exist key and sotred value hash .
If socket error occured, throw Exception .
If socket timeout occured, throw TimeoutError .
321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 |
# File 'lib/roma/client/rclient.rb', line 321 def gets(keys, raw = false) kn = {} keys.each{|key| nid, d = @rttable.search_node(key) kn[nid] ||= [] kn[nid] << key } res = {} kn.each_pair{|nid,ks| res.merge!(gets_sender(nid, ks)) } unless raw res.each do |key, val| res[key] = Marshal.load(val) end end res end |
#incr(key, val = 1) ⇒ Object
increment value .
- key
-
key for incremental .
- val
-
incremental value .
- return
-
Fixnum incrementaled value .
If same key doesn’t exist in ROMA, return NOT_FOUND .
If socket error occured, throw Exception .
If socket timeout occured, throw TimeoutError .
357 358 359 360 361 |
# File 'lib/roma/client/rclient.rb', line 357 def incr(key, val = 1) ret = sender(:oneline_receiver, key, nil, "incr %s %d", val.to_i) return ret if ret =~ /\D/ ret.to_i end |
#make_rttable(node) ⇒ Object
81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 |
# File 'lib/roma/client/rclient.rb', line 81 def make_rttable(node) mklhash = @sender.send_route_mklhash_command(node) return nil unless mklhash if @rttable && @rttable.mklhash == mklhash return @rttable end rd = @sender.send_routedump_command(node) if rd ret = ClientRoutingTable.new(rd) ret.mklhash = mklhash return ret end nil rescue nil end |
#out(key) ⇒ Object
Delete value completely .
This method delete value completely. “completely” means Don’t set delete flag in server, but delete value in storage . Delete method set delete flag, but delete value soon .
- key
-
key for delete .
- return
-
return follow set status .
-
If method is success, return DELETED .
-
If same key doesn’t exist in ROMA, return NOT_FOUND .
-
If server error, return SERVER_ERROR .
If socket error occured, throw Exception .
If socket timeout occured, throw TimeoutError .
287 288 289 |
# File 'lib/roma/client/rclient.rb', line 287 def out(key) sender(:oneline_receiver, key, nil, "out %s") end |
#prepend(key, val, expt = 0) ⇒ Object
Prepend value to exists string .
If same key exists in ROMA, this method prepend value . If same key doesn’t exist in ROMA this method don’t store value and return NOT_STORE .
- key
-
key for prepend .
- value
-
prepend value .
- exp
-
expire seconds .
- return
-
return follow set status .
-
If method is success, return STORED .
-
If same key exists in ROMA, return NOT_STORED .
-
If server error, return SERVER_ERROR .
If socket error occured, throw Exception .
If socket timeout occured, throw TimeoutError .
225 226 227 |
# File 'lib/roma/client/rclient.rb', line 225 def prepend(key, val, expt = 0) sender(:oneline_receiver, key, val, "prepend %s 0 %d %d", expt.to_i, val.length) end |
#replace(key, val, expt = 0, raw = false) ⇒ Object
Add value to ROMA .
If same key exists in ROMA, this method overwrite value . If same key doesn’t exist in ROMA this method don’t store value and return NOT_STORE .
- key
-
key for store .
- value
-
store value .
- exp
-
expire seconds .
- raw
-
You set this value true, value isn’t marshaled .
- return
-
return follow set status .
-
If method is success, return STORED .
-
If same key exists in ROMA, return NOT_STORED .
-
If server error, return SERVER_ERROR .
If socket error occured, throw Exception .
If socket timeout occured, throw TimeoutError .
180 181 182 183 |
# File 'lib/roma/client/rclient.rb', line 180 def replace(key, val, expt = 0, raw = false) val = Marshal.dump(val) unless raw sender(:oneline_receiver, key, val, "replace %s 0 %d %d", expt.to_i, val.length) end |
#rttable_last_update ⇒ Object
77 78 79 |
# File 'lib/roma/client/rclient.rb', line 77 def rttable_last_update @rttable_last_update end |
#set(key, val, expt = 0, raw = false) ⇒ Object
Set value to ROMA .
Both same same key exists or not exists in ROMA, this method set value .
- key
-
key for store .
- value
-
store value .
- exp
-
expire seconds .
- raw
-
You set this value true, value isn’t marshaled .
- return
-
return follow set status .
-
If method is success, return STORED .
-
If method is not stored, return NOT_STORED .
-
If server error, return SERVER_ERROR .
If socket error occured, throw Exception .
If socket timeout occured, throw TimeoutError .
133 134 135 136 |
# File 'lib/roma/client/rclient.rb', line 133 def set(key, val, expt = 0, raw = false) val = Marshal.dump(val) unless raw sender(:oneline_receiver, key, val, "set %s 0 %d %d", expt.to_i, val.length) end |
#stats ⇒ Object
380 381 382 383 |
# File 'lib/roma/client/rclient.rb', line 380 def stats raise RuntimeError.new("Unsupported yet") # TODO @sender.send_stats_command end |
#update_rttable(nodes = self.rttable.nodes) ⇒ Object
62 63 64 65 66 67 68 69 70 71 72 73 74 75 |
# File 'lib/roma/client/rclient.rb', line 62 def update_rttable(nodes = self.rttable.nodes) raise RuntimeError.new("nodes must not be nil.") unless nodes nodes.each { |node| rt = make_rttable(node) if rt @rttable = rt @rttable_last_update = Time.now return end } raise RuntimeError.new("fatal error") end |
#verbosity ⇒ Object
390 391 392 393 |
# File 'lib/roma/client/rclient.rb', line 390 def verbosity raise RuntimeError.new("Unsupported yet") # TODO @sender.send_verbosity_command end |
#version ⇒ Object
385 386 387 388 |
# File 'lib/roma/client/rclient.rb', line 385 def version raise RuntimeError.new("Unsupported yet") # TODO @sender.send_version_command end |