Sha256: 802adbf2980365776bc401c3159c6894938c67f3427a1dc332031f48831d04fd
Contents?: true
Size: 1.46 KB
Versions: 1
Compression:
Stored size: 1.46 KB
Contents
require 'gorgon/originator_protocol' require 'gorgon/configuration' require 'gorgon/originator_logger' require 'gorgon/colors' require 'colorize' class PingService include Configuration TIMEOUT=4 def initialize @configuration = load_configuration_from_file("gorgon.json") @logger = OriginatorLogger.new @configuration[:originator_log_file] @protocol = OriginatorProtocol.new @logger @listeners = [] end def ping_listeners Signal.trap("INT") { disconnect } Signal.trap("TERM") { disconnect } EventMachine.run do @logger.log "Connecting..." @protocol.connect @configuration[:connection], :on_closed => proc {EM.stop} @logger.log "Pinging Listeners..." @protocol.ping_listeners EM.add_timer(TIMEOUT) { disconnect } @protocol.receive_payloads do |payload| @logger.log "Received #{payload}" handle_reply(Yajl::Parser.new(:symbolize_keys => true).parse(payload)) end end end private def disconnect @protocol.disconnect print_summary end def handle_reply payload if payload[:type] != "ping_response" puts "Unexpected message received: #{payload}" return end @listeners << payload hostname = payload[:hostname].colorize(Colors::HOST) puts "#{hostname} is running Listener version #{payload[:version]}" end def print_summary puts "\n#{@listeners.size} host(s) responded." end def on_disconnect EventMachine.stop end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
gorgon-0.2.0 | lib/gorgon/ping_service.rb |