Class: TokyoMessenger::Balancer::Base
- Inherits:
-
Object
- Object
- TokyoMessenger::Balancer::Base
- Defined in:
- lib/tokyo_messenger/balancer.rb
Instance Method Summary collapse
- #add_double(key, i = 1.0) ⇒ Object (also: #adddouble)
- #add_int(key, i = 1) ⇒ Object (also: #addint, #increment)
- #check(key) ⇒ Object (also: #has_key?, #key?, #include?, #member?)
-
#close ⇒ Object
Aggregate Methods.
- #db_for_key(key) ⇒ Object
- #delete_keys_with_prefix(prefix, max = -1)) ⇒ Object (also: #dfwmkeys)
- #empty? ⇒ Boolean
- #fetch(key, &block) ⇒ Object
- #fwmkeys(prefix, max = -1)) ⇒ Object
-
#get(key) ⇒ Object
(also: #[])
Delegate Methods.
- #get_double(key) ⇒ Object
- #get_int(key) ⇒ Object
-
#initialize(servers = [], weights = {}) ⇒ Base
constructor
A new instance of Base.
- #keys ⇒ Object
- #optimize(*args) ⇒ Object
- #out(key) ⇒ Object (also: #delete)
- #put(key, value) ⇒ Object (also: #[]=)
- #putcat(key, value) ⇒ Object
- #putkeep(key, value) ⇒ Object
- #putnr(key, value) ⇒ Object
- #putshl(key, value, width) ⇒ Object
- #ring ⇒ Object
- #rnum ⇒ Object (also: #count, #size, #length)
- #servers ⇒ Object
- #set_index(name, type) ⇒ Object
- #sync ⇒ Object
- #values ⇒ Object
- #vanish ⇒ Object (also: #clear)
- #vsiz(key) ⇒ Object
Constructor Details
#initialize(servers = [], weights = {}) ⇒ Base
Returns a new instance of Base.
7 8 9 10 11 12 13 14 15 |
# File 'lib/tokyo_messenger/balancer.rb', line 7 def initialize(servers = [], weights = {}) servers.collect! do |server| host, port = server.split(':') klass.new(host, port.to_i) end @servers = servers # @ring = HashRing.new(servers, weights) @ring = FastHashRing.new(servers, weights) end |
Instance Method Details
#add_double(key, i = 1.0) ⇒ Object Also known as: adddouble
48 49 50 51 |
# File 'lib/tokyo_messenger/balancer.rb', line 48 def add_double(key, i = 1.0) db = db_for_key(key) db.add_double(key, i) end |
#add_int(key, i = 1) ⇒ Object Also known as: addint, increment
36 37 38 39 |
# File 'lib/tokyo_messenger/balancer.rb', line 36 def add_int(key, i = 1) db = db_for_key(key) db.add_int(key, i) end |
#check(key) ⇒ Object Also known as: has_key?, key?, include?, member?
130 131 132 |
# File 'lib/tokyo_messenger/balancer.rb', line 130 def check(key) @servers.any?{ |server| server.check(key) } end |
#close ⇒ Object
Aggregate Methods
102 103 104 |
# File 'lib/tokyo_messenger/balancer.rb', line 102 def close @servers.all?{ |server| server.close } end |
#db_for_key(key) ⇒ Object
25 26 27 |
# File 'lib/tokyo_messenger/balancer.rb', line 25 def db_for_key(key) ring.get_node(key) end |
#delete_keys_with_prefix(prefix, max = -1)) ⇒ Object Also known as: dfwmkeys
146 147 148 149 |
# File 'lib/tokyo_messenger/balancer.rb', line 146 def delete_keys_with_prefix(prefix, max = -1) @servers.each{ |server| server.delete_keys_with_prefix(prefix, max) } nil end |
#empty? ⇒ Boolean
113 114 115 |
# File 'lib/tokyo_messenger/balancer.rb', line 113 def empty? @servers.all?{ |server| server.empty? } end |
#fetch(key, &block) ⇒ Object
90 91 92 93 |
# File 'lib/tokyo_messenger/balancer.rb', line 90 def fetch(key, &block) db = db_for_key(key) db.fetch(key, &block) end |
#fwmkeys(prefix, max = -1)) ⇒ Object
142 143 144 |
# File 'lib/tokyo_messenger/balancer.rb', line 142 def fwmkeys(prefix, max = -1) @servers.collect{ |server| server.fwmkeys(prefix, max) }.flatten end |
#get(key) ⇒ Object Also known as: []
Delegate Methods
30 31 32 33 |
# File 'lib/tokyo_messenger/balancer.rb', line 30 def get(key) db = db_for_key(key) db.get(key) end |
#get_double(key) ⇒ Object
54 55 56 57 |
# File 'lib/tokyo_messenger/balancer.rb', line 54 def get_double(key) db = db_for_key(key) db.get_double(key) end |
#get_int(key) ⇒ Object
43 44 45 46 |
# File 'lib/tokyo_messenger/balancer.rb', line 43 def get_int(key) db = db_for_key(key) db.get_int(key) end |
#keys ⇒ Object
152 153 154 |
# File 'lib/tokyo_messenger/balancer.rb', line 152 def keys @servers.collect{ |server| server.keys }.flatten.uniq end |
#optimize(*args) ⇒ Object
126 127 128 |
# File 'lib/tokyo_messenger/balancer.rb', line 126 def optimize(*args) @servers.all?{ |server| server.optimize(*args) } end |
#out(key) ⇒ Object Also known as: delete
95 96 97 98 |
# File 'lib/tokyo_messenger/balancer.rb', line 95 def out(key) db = db_for_key(key) db.out(key) end |
#put(key, value) ⇒ Object Also known as: []=
59 60 61 62 |
# File 'lib/tokyo_messenger/balancer.rb', line 59 def put(key, value) db = db_for_key(key) db.put(key, value) end |
#putcat(key, value) ⇒ Object
70 71 72 73 |
# File 'lib/tokyo_messenger/balancer.rb', line 70 def putcat(key, value) db = db_for_key(key) db.putcat(key, value) end |
#putkeep(key, value) ⇒ Object
65 66 67 68 |
# File 'lib/tokyo_messenger/balancer.rb', line 65 def putkeep(key, value) db = db_for_key(key) db.putkeep(key, value) end |
#putnr(key, value) ⇒ Object
80 81 82 83 |
# File 'lib/tokyo_messenger/balancer.rb', line 80 def putnr(key, value) db = db_for_key(key) db.putnr(key, value) end |
#putshl(key, value, width) ⇒ Object
75 76 77 78 |
# File 'lib/tokyo_messenger/balancer.rb', line 75 def putshl(key, value, width) db = db_for_key(key) db.putshl(key, value, width) end |
#ring ⇒ Object
17 18 19 |
# File 'lib/tokyo_messenger/balancer.rb', line 17 def ring @ring end |
#rnum ⇒ Object Also known as: count, size, length
106 107 108 |
# File 'lib/tokyo_messenger/balancer.rb', line 106 def rnum @servers.collect{ |server| server.rnum }.inject(nil){ |sum,x| sum ? sum+x : x } end |
#servers ⇒ Object
21 22 23 |
# File 'lib/tokyo_messenger/balancer.rb', line 21 def servers @servers end |
#set_index(name, type) ⇒ Object
138 139 140 |
# File 'lib/tokyo_messenger/balancer.rb', line 138 def set_index(name, type) @servers.all?{ |server| server.set_index(name, type) } end |
#sync ⇒ Object
122 123 124 |
# File 'lib/tokyo_messenger/balancer.rb', line 122 def sync @servers.each{ |server| server.sync } end |
#values ⇒ Object
156 157 158 |
# File 'lib/tokyo_messenger/balancer.rb', line 156 def values @servers.collect{ |server| server.values }.flatten.uniq end |
#vanish ⇒ Object Also known as: clear
117 118 119 |
# File 'lib/tokyo_messenger/balancer.rb', line 117 def vanish @servers.all?{ |server| server.vanish } end |
#vsiz(key) ⇒ Object
85 86 87 88 |
# File 'lib/tokyo_messenger/balancer.rb', line 85 def vsiz(key) db = db_for_key(key) db.vsiz(key) end |