Class: Qcmd::Network

Inherits:
Object
  • Object
show all
Defined in:
lib/qcmd/network.rb

Constant Summary collapse

BROWSE_TIMEOUT =
2

Class Attribute Summary collapse

Class Method Summary collapse

Class Attribute Details

.browse_threadObject

Returns the value of attribute browse_thread.



8
9
10
# File 'lib/qcmd/network.rb', line 8

def browse_thread
  @browse_thread
end

.machinesObject

Returns the value of attribute machines.



8
9
10
# File 'lib/qcmd/network.rb', line 8

def machines
  @machines
end

Class Method Details

.browseObject

browse can be used alone to populate the machines list



11
12
13
14
15
16
17
18
19
20
21
22
23
24
# File 'lib/qcmd/network.rb', line 11

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

  sleep BROWSE_TIMEOUT

  Thread.kill(browse_thread) if browse_thread.alive?
end

.browse_and_display(options = {}) ⇒ Object



46
47
48
49
50
51
# File 'lib/qcmd/network.rb', line 46

def browse_and_display options={}
  browse
  if !options[:machine_given] || (options[:machine_given] && !find(options[:machine_name]).nil?)
    display options
  end
end

.display(options = {}) ⇒ Object



26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
# File 'lib/qcmd/network.rb', line 26

def display options={}
  longest = machines.map {|m| m.name.size}.max

  Qcmd.print
  Qcmd.print "Found #{ machines.size } QLab machine#{ machines.size == 1 ? '' : 's'}"
  Qcmd.print

  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

.find(machine_name) ⇒ Object



53
54
55
# File 'lib/qcmd/network.rb', line 53

def find machine_name
  machines.find {|m| m.name == machine_name}
end

.namesObject



57
58
59
# File 'lib/qcmd/network.rb', line 57

def names
  machines.map(&:name)
end