class Renoir::ClusterInfo

Store cluster information.

Public Class Methods

new() click to toggle source
# File lib/renoir/cluster_info.rb, line 10
def initialize
  @slots = {}
  @nodes = {}
end
node_name(host, port) click to toggle source
# File lib/renoir/cluster_info.rb, line 5
def node_name(host, port)
  "#{host}:#{port}"
end

Public Instance Methods

add_node(host, port) click to toggle source
# File lib/renoir/cluster_info.rb, line 37
def add_node(host, port)
  name = self.class.node_name(host, port)
  @nodes[name] = {
    host: host,
    port: port,
    name: name,
  }
end
load_slots(slots) click to toggle source
# File lib/renoir/cluster_info.rb, line 15
def load_slots(slots)
  slots.each do |s, e, master, *slaves|
    ip, port, = master
    node = add_node(ip, port)
    (s..e).each do |slot|
      @slots[slot] = node[:name]
    end
  end
end
node_names() click to toggle source
# File lib/renoir/cluster_info.rb, line 29
def node_names
  @nodes.keys
end
nodes() click to toggle source
# File lib/renoir/cluster_info.rb, line 33
def nodes
  @nodes.values
end
slot_node(slot) click to toggle source
# File lib/renoir/cluster_info.rb, line 25
def slot_node(slot)
  @nodes[@slots[slot]]
end