Class: Profiler::Cluster::SlaveRegistry

Inherits:
Object
  • Object
show all
Defined in:
lib/profiler/cluster/slave_registry.rb

Defined Under Namespace

Classes: Entry

Instance Method Summary collapse

Constructor Details

#initializeSlaveRegistry

Returns a new instance of SlaveRegistry.



22
23
24
# File 'lib/profiler/cluster/slave_registry.rb', line 22

def initialize
  @slaves = Concurrent::Hash.new
end

Instance Method Details

#allObject



45
46
47
# File 'lib/profiler/cluster/slave_registry.rb', line 45

def all
  @slaves.values.map(&:to_h)
end

#find!(name) ⇒ Object



41
42
43
# File 'lib/profiler/cluster/slave_registry.rb', line 41

def find!(name)
  @slaves[name] || raise(Profiler::Error, "Unknown slave profiler: #{name}")
end

#heartbeat(name) ⇒ Object



37
38
39
# File 'lib/profiler/cluster/slave_registry.rb', line 37

def heartbeat(name)
  @slaves[name]&.tap { |e| e.last_heartbeat_at = Time.now }
end

#register(name:, url:) ⇒ Object



26
27
28
29
30
31
32
33
34
35
# File 'lib/profiler/cluster/slave_registry.rb', line 26

def register(name:, url:)
  now = Time.now
  if (existing = @slaves[name])
    existing.url = url
    existing.last_heartbeat_at = now
  else
    @slaves[name] = Entry.new(name: name, url: url, registered_at: now, last_heartbeat_at: now)
  end
  @slaves[name]
end