Sha256: f4d0e9217ee0776f9dcce46cf606918a933e0aab42e8c898c4e643d7dffe56e4
Contents?: true
Size: 1.6 KB
Versions: 4
Compression:
Stored size: 1.6 KB
Contents
require 'dnssd' module Qcmd class Network BROWSE_TIMEOUT = 2 class << self attr_accessor :machines, :browse_thread def browse self.machines = [] self.browse_thread = Thread.start do DNSSD.browse! '_qlab._udp' do |b| DNSSD.resolve b.name, b.type, b.domain do |r| self.machines << Qcmd::Machine.new(b.name, r.target, r.port) end end end naps = 0 changed = false previous = 0 # sleep for 3 seconds while naps < BROWSE_TIMEOUT sleep 1 naps += 1 if machines.size != previous Qcmd.print Qcmd.print "Found #{ machines.size } QLab machine#{ machines.size == 1 ? '' : 's'}" Qcmd.print previous = machines.size end end Thread.kill(browse_thread) if browse_thread.alive? end def display longest = machines.map {|m| m.name.size}.max machines.each_with_index do |machine, n| if Qcmd.debug? Qcmd.print "#{ n + 1 }. %-#{ longest + 2 }s %s" % [machine.name, machine.client_string] else Qcmd.print "#{ n + 1 }. %-#{ longest + 2 }s" % [machine.name] end end Qcmd.print Qcmd.print 'type `connect MACHINE` to connect to a machine' Qcmd.print end def browse_and_display browse display end def find machine_name machines.find {|m| m.name == machine_name} end def names machines.map(&:name) end end end end
Version data entries
4 entries across 4 versions & 1 rubygems
Version | Path |
---|---|
qcmd-0.1.3 | lib/qcmd/network.rb |
qcmd-0.1.2 | lib/qcmd/network.rb |
qcmd-0.1.1 | lib/qcmd/network.rb |
qcmd-0.1.0 | lib/qcmd/network.rb |