Module: Legion::MCP::Client::ServerRegistry
- Defined in:
- lib/legion/mcp/client/server_registry.rb
Class Method Summary collapse
- .deregister(name) ⇒ Object
- .healthy_servers ⇒ Object
- .load_from_settings(settings_hash) ⇒ Object
- .mark_healthy(name) ⇒ Object
- .mark_unhealthy(name, cooldown: 60) ⇒ Object
- .register(name, **config) ⇒ Object
- .reset! ⇒ Object
- .servers ⇒ Object
Class Method Details
.deregister(name) ⇒ Object
29 30 31 32 33 34 |
# File 'lib/legion/mcp/client/server_registry.rb', line 29 def deregister(name) @mutex.synchronize do @servers.delete(name) @health.delete(name) end end |
.healthy_servers ⇒ Object
40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 |
# File 'lib/legion/mcp/client/server_registry.rb', line 40 def healthy_servers @mutex.synchronize do @servers.select do |name, _| h = @health[name] next true if h.nil? || h[:healthy] cooldown = h[:cooldown] || 60 if Time.now - (h[:marked_at] || Time.now) >= cooldown h[:healthy] = true true else false end end end end |
.load_from_settings(settings_hash) ⇒ Object
13 14 15 16 17 18 19 20 |
# File 'lib/legion/mcp/client/server_registry.rb', line 13 def load_from_settings(settings_hash) @mutex.synchronize do settings_hash.each do |name, config| @servers[name] = config.merge(registered_at: Time.now, source: :settings) @health[name] = { healthy: true, last_check: Time.now } end end end |
.mark_healthy(name) ⇒ Object
68 69 70 71 72 |
# File 'lib/legion/mcp/client/server_registry.rb', line 68 def mark_healthy(name) @mutex.synchronize do @health[name] = { healthy: true, last_check: Time.now } end end |
.mark_unhealthy(name, cooldown: 60) ⇒ Object
57 58 59 60 61 62 63 64 65 66 |
# File 'lib/legion/mcp/client/server_registry.rb', line 57 def mark_unhealthy(name, cooldown: 60) @mutex.synchronize do @health[name] = { healthy: false, marked_at: Time.now, cooldown: cooldown, last_check: Time.now } end end |
.register(name, **config) ⇒ Object
22 23 24 25 26 27 |
# File 'lib/legion/mcp/client/server_registry.rb', line 22 def register(name, **config) @mutex.synchronize do @servers[name] = config.merge(registered_at: Time.now, source: :dynamic) @health[name] = { healthy: true, last_check: Time.now } end end |
.reset! ⇒ Object
74 75 76 77 78 79 |
# File 'lib/legion/mcp/client/server_registry.rb', line 74 def reset! @mutex.synchronize do @servers.clear @health.clear end end |
.servers ⇒ Object
36 37 38 |
# File 'lib/legion/mcp/client/server_registry.rb', line 36 def servers @mutex.synchronize { @servers.dup } end |