lib/rubydns.rb in rubydns-0.8.5 vs lib/rubydns.rb in rubydns-0.9.0

- old
+ new

@@ -22,22 +22,29 @@ require_relative 'rubydns/message' require_relative 'rubydns/server' require_relative 'rubydns/resolver' require_relative 'rubydns/handler' +require_relative 'rubydns/logger' module RubyDNS # Run a server with the given rules. def self.run_server (options = {}, &block) - server = RubyDNS::RuleBasedServer.new(&block) + supervisor = RubyDNS::RuleBasedServer.supervise(options, &block) - EventMachine.run do - trap("INT") do - EventMachine::stop - end + supervisor.actors.first.run + + if options[:asynchronous] + return supervisor + else + read, write = IO.pipe + + trap(:INT) { + write.puts + } + + IO.select([read]) - server.run(options) + supervisor.terminate end - - server.fire(:stop) end end