Class: Profiler::Cluster::SlaveRegistry
- Inherits:
-
Object
- Object
- Profiler::Cluster::SlaveRegistry
- Defined in:
- lib/profiler/cluster/slave_registry.rb
Defined Under Namespace
Classes: Entry
Instance Method Summary collapse
- #all ⇒ Object
- #find!(name) ⇒ Object
- #heartbeat(name) ⇒ Object
-
#initialize ⇒ SlaveRegistry
constructor
A new instance of SlaveRegistry.
- #register(name:, url:) ⇒ Object
Constructor Details
#initialize ⇒ SlaveRegistry
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
#all ⇒ Object
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 |