Class: VagrantDns::Server

Inherits:
Object
  • Object
show all
Defined in:
lib/vagrant_dns/server.rb

Instance Method Summary collapse

Constructor Details

#initializeServer

Returns a new instance of Server.



3
4
5
6
# File 'lib/vagrant_dns/server.rb', line 3

def initialize
  traps
  @resolv = VagrantDns::ResolvConf.new
end

Instance Method Details

#processObject



14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
# File 'lib/vagrant_dns/server.rb', line 14

def process
  begin
    # @resolv.append
    zmq = EM::ZeroMQ::Context.new(1)
    EM.run {
 @dns = VagrantDns::DnsServer.new
 puts "processing "
 pull= zmq.socket(ZMQ::SUB)
 pull.bind(CONF.get('zmq_url'))
 pull.subscribe('vagrant')
 pull.on(:message) { |part|
        host, ip, stat=  unpack(part.copy_out_string)
    puts "[#{ip}->#{host}]: is #{stat.to_s}"
    REG.register(host,ip) if :up.eql?(stat)
    REG.delete(host) if :down.eql?(stat)
    part.close
 }
    }
  rescue => e
    $stderr.puts e
    $stderr.puts e.backtrace.join("\n")
    shutdown
  end
end

#shutdownObject



45
46
47
48
49
# File 'lib/vagrant_dns/server.rb', line 45

def shutdown
  $stderr.puts "Cleaning up server"
  # @resolv.clear
  EM::stop()
end

#trapsObject



39
40
41
42
43
# File 'lib/vagrant_dns/server.rb', line 39

def traps 
  %w(INT SIGINT TERM).each{|s|
    Signal.trap(s) {shutdown}
  }
end

#unpack(message) ⇒ Object



9
10
11
12
# File 'lib/vagrant_dns/server.rb', line 9

def unpack(message)
  _, host, ip, msg = message.split ' ', 4
  [host, ip, msg.to_sym]
end