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