Sha256: a7c33212362527a0a5b66b26761ef8f53e65383027c4f9172573d10413dbd8ac

Contents?: true

Size: 621 Bytes

Versions: 3

Compression:

Stored size: 621 Bytes

Contents

module Aggro
  # Public: Locates the nodes responsible for a given entity ID.
  class Locator
    def initialize(id)
      @id = id
    end

    def local?
      primary_node.is_a? LocalNode
    end

    def nodes
      current_node_list_state = Aggro.node_list.state

      if @last_node_list_state == current_node_list_state
        @nodes ||= Aggro.node_list.nodes_for(@id)
      else
        @last_node_list_state = current_node_list_state

        @nodes = Aggro.node_list.nodes_for(@id)
      end
    end

    def primary_node
      nodes.first
    end

    def secondary_nodes
      nodes[1..-1]
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
aggro-0.0.4 lib/aggro/locator.rb
aggro-0.0.3 lib/aggro/locator.rb
aggro-0.0.2 lib/aggro/locator.rb