class Discover::Registration
Constants
- HEARTBEAT_INTERVAL
Public Class Methods
new(client, name, address, attributes = {}, standby = false)
click to toggle source
# File lib/discover.rb, line 59 def initialize(client, name, address, attributes = {}, standby = false) @client = client @name = name @address = address @attributes = attributes @standby = standby end
Public Instance Methods
register()
click to toggle source
# File lib/discover.rb, line 67 def register send_register_request start_heartbeat wait_for_election if @standby end
send_register_request()
click to toggle source
# File lib/discover.rb, line 79 def send_register_request args = { "Name" => @name, "Addr" => @address, "Attrs" => @attributes } @client.request("Agent.Register", args).value end
send_unregister_request()
click to toggle source
# File lib/discover.rb, line 89 def send_unregister_request args = { "Name" => @name, "Addr" => @address } @client.request("Agent.Unregister", args).value end
start_heartbeat()
click to toggle source
# File lib/discover.rb, line 98 def start_heartbeat @heartbeat = every(HEARTBEAT_INTERVAL) do @client.request( "Agent.Heartbeat", "Name" => @name, "Addr" => @address ) end end
stop_heartbeat()
click to toggle source
# File lib/discover.rb, line 108 def stop_heartbeat @heartbeat.cancel end
unregister()
click to toggle source
# File lib/discover.rb, line 73 def unregister stop_heartbeat send_unregister_request @client.remove_registration(self) end
wait_for_election()
click to toggle source
# File lib/discover.rb, line 112 def wait_for_election async.watch_leaders wait :elected end
watch_leaders()
click to toggle source
# File lib/discover.rb, line 117 def watch_leaders @client.service(@name).each_leader do |leader| if leader.address == @address signal :elected end end end