Class: Volt::MessageBus::ServerTracker
- Defined in:
- lib/volt/server/message_bus/peer_to_peer/server_tracker.rb
Constant Summary collapse
- UPDATE_INTERVAL =
10
Instance Method Summary collapse
-
#initialize(volt_app, server_id, port) ⇒ ServerTracker
constructor
A new instance of ServerTracker.
- #local_ips ⇒ Object
-
#register ⇒ Object
Register this server as active with the database.
- #stop ⇒ Object
Constructor Details
#initialize(volt_app, server_id, port) ⇒ ServerTracker
Returns a new instance of ServerTracker.
11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
# File 'lib/volt/server/message_bus/peer_to_peer/server_tracker.rb', line 11 def initialize(volt_app, server_id, port) @volt_app = volt_app @server_id = server_id @port = port @main_thread = Thread.new do # Continually update the database letting the server know the server # is active. loop do begin register rescue Exception => e puts "MessageBus Register Error: #{e.inspect}" end sleep UPDATE_INTERVAL end end end |
Instance Method Details
#local_ips ⇒ Object
48 49 50 51 52 53 54 |
# File 'lib/volt/server/message_bus/peer_to_peer/server_tracker.rb', line 48 def local_ips addr_infos = Socket.ip_address_list ips = addr_infos.select do |addr| addr.pfamily == Socket::PF_INET end.map(&:ip_address) end |
#register ⇒ Object
Register this server as active with the database
35 36 37 38 39 40 41 42 43 44 45 46 |
# File 'lib/volt/server/message_bus/peer_to_peer/server_tracker.rb', line 35 def register instances = @volt_app.store.active_volt_instances instances.where(server_id: @server_id).first.then do |item| ips = local_ips.join(',') time = Time.now.to_i if item item.assign_attributes(ips: ips, time: time, port: @port) else instances << {server_id: @server_id, ips: ips, port: @port, time: time} end end end |
#stop ⇒ Object
30 31 32 |
# File 'lib/volt/server/message_bus/peer_to_peer/server_tracker.rb', line 30 def stop @main_thread.kill end |