Class: TokyoMessenger::Balancer::Base

Inherits:
Object
  • Object
show all
Defined in:
lib/tokyo_messenger/balancer.rb

Direct Known Subclasses

DB, Table

Instance Method Summary collapse

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

#closeObject

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

Returns:

  • (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

#keysObject



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

#ringObject



17
18
19
# File 'lib/tokyo_messenger/balancer.rb', line 17

def ring
  @ring
end

#rnumObject 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

#serversObject



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

#syncObject



122
123
124
# File 'lib/tokyo_messenger/balancer.rb', line 122

def sync
  @servers.each{ |server| server.sync }
end

#valuesObject



156
157
158
# File 'lib/tokyo_messenger/balancer.rb', line 156

def values
  @servers.collect{ |server| server.values }.flatten.uniq
end

#vanishObject 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