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(filter: "", node: @rttable.nodes.first) ⇒ 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 .
26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
# File 'lib/roma/client/rclient.rb', line 26 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.
20 21 22 |
# File 'lib/roma/client/rclient.rb', line 20 def default_hash_name @default_hash_name end |
#retry_count_read ⇒ Object
Returns the value of attribute retry_count_read.
19 20 21 |
# File 'lib/roma/client/rclient.rb', line 19 def retry_count_read @retry_count_read end |
#retry_count_write ⇒ Object
Returns the value of attribute retry_count_write.
18 19 20 |
# File 'lib/roma/client/rclient.rb', line 18 def retry_count_write @retry_count_write end |
#rttable ⇒ Object
Returns the value of attribute rttable.
16 17 18 |
# File 'lib/roma/client/rclient.rb', line 16 def rttable @rttable end |
#sender=(value) ⇒ Object
Sets the attribute sender
17 18 19 |
# File 'lib/roma/client/rclient.rb', line 17 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 .
111 112 113 |
# File 'lib/roma/client/rclient.rb', line 111 def [](key) get(key) end |
#[]=(key, value) ⇒ Object
Set value to ROMA . please see set method .
101 102 103 |
# File 'lib/roma/client/rclient.rb', line 101 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 .
155 156 157 158 |
# File 'lib/roma/client/rclient.rb', line 155 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 .
202 203 204 |
# File 'lib/roma/client/rclient.rb', line 202 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 .
243 244 245 246 247 248 249 250 251 252 |
# File 'lib/roma/client/rclient.rb', line 243 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 .
373 374 375 376 377 |
# File 'lib/roma/client/rclient.rb', line 373 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 .
266 267 268 |
# File 'lib/roma/client/rclient.rb', line 266 def delete(key) sender(:oneline_receiver, key, nil, "delete %s") end |
#flush_all ⇒ Object
340 341 342 343 |
# File 'lib/roma/client/rclient.rb', line 340 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 .
301 302 303 304 305 306 |
# File 'lib/roma/client/rclient.rb', line 301 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 .
320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 |
# File 'lib/roma/client/rclient.rb', line 320 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 .
356 357 358 359 360 |
# File 'lib/roma/client/rclient.rb', line 356 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
80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 |
# File 'lib/roma/client/rclient.rb', line 80 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 .
286 287 288 |
# File 'lib/roma/client/rclient.rb', line 286 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 .
224 225 226 |
# File 'lib/roma/client/rclient.rb', line 224 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 .
179 180 181 182 |
# File 'lib/roma/client/rclient.rb', line 179 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
76 77 78 |
# File 'lib/roma/client/rclient.rb', line 76 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 .
132 133 134 135 |
# File 'lib/roma/client/rclient.rb', line 132 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(filter: "", node: @rttable.nodes.first) ⇒ Object
379 380 381 |
# File 'lib/roma/client/rclient.rb', line 379 def stats(filter: "", node: @rttable.nodes.first) @sender.send_stats_command(filter, node) end |
#update_rttable(nodes = self.rttable.nodes) ⇒ Object
61 62 63 64 65 66 67 68 69 70 71 72 73 74 |
# File 'lib/roma/client/rclient.rb', line 61 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
388 389 390 391 |
# File 'lib/roma/client/rclient.rb', line 388 def verbosity raise RuntimeError.new("Unsupported yet") # TODO @sender.send_verbosity_command end |
#version ⇒ Object
383 384 385 386 |
# File 'lib/roma/client/rclient.rb', line 383 def version raise RuntimeError.new("Unsupported yet") # TODO @sender.send_version_command end |