class GardenMessenger::Reporter
Public Class Methods
new(monitor_url, token, update_rate, verbose = false)
click to toggle source
# File lib/garden_messenger/reporter.rb, line 6 def initialize(monitor_url, token, update_rate, verbose = false) @monitor_url = monitor_url @token = token @update_rate = Integer(update_rate) @verbose = verbose if @verbose puts "Initialized #{self.class.name}:" puts " > monitor_url: #{@monitor_url}" puts " > token: #{@token}" puts " > update_rate: #{@update_rate} (seconds)" end end
Public Instance Methods
report!() { || ... }
click to toggle source
# File lib/garden_messenger/reporter.rb, line 20 def report! EventMachine.run do Signal.trap('INT') { EventMachine.stop } Signal.trap('TERM') { EventMachine.stop } client = ActionCableClient.new( @monitor_url, 'MessengerChannel', true, Authorization: "Token #{@token}" ) # called whenever a welcome message is received from the server client.connected do if @verbose puts 'Connection established with monitor ' \ "on #{@monitor_url}" end thread = Thread.new do loop do data = yield puts "Sending data: #{data.to_json}" if @verbose client.perform('report', data) sleep @update_rate end end thread.abort_on_exception = true end client.disconnected do puts 'Disconnected from monitor, exiting' exit 1 end client.errored do |error| puts "Error received: #{error}" end client.received end end