Class | Dnsruby::SingleResolver |
In: |
lib/Dnsruby/SingleResolver.rb
|
Parent: | Resolver |
This class has been deprecated. This implementation exists for legacy clients. New code should use the Dnsruby::Resolver class. The SingleResolver class targets a single resolver, and controls the sending of a single packet with a packet timeout. It performs no retries. Only two threads are used - the client thread and a select thread (which is reused across all queries).
These methods raise an exception or return a response message with rcode==NOERROR
These methods use a response queue to return the response and the error to the client. Support for EventMachine has been deprecated
packet_timeout | -> | query_timeout |
Can take a hash with the following optional keys :
# File lib/Dnsruby/SingleResolver.rb, line 55 55: def initialize(*args) 56: arg=args[0] 57: @single_res_mutex = Mutex.new 58: @packet_timeout = Resolver::DefaultPacketTimeout 59: @query_timeout = @packet_timeout 60: @port = Resolver::DefaultPort 61: @udp_size = Resolver::DefaultUDPSize 62: @dnssec = Resolver::DefaultDnssec 63: @use_tcp = false 64: @tsig = nil 65: @ignore_truncation = false 66: @src_address = '0.0.0.0' 67: @src_port = [0] 68: @recurse = true 69: @persistent_udp = false 70: @persistent_tcp = false 71: @retry_times = 1 72: @retry_delay = 0 73: @single_resolvers = [] 74: @configured = false 75: @config = Config.new 76: 77: if (arg==nil) 78: # Get default config 79: # @config = Config.new 80: ## @server = config.nameserver[0] 81: elsif (arg.kind_of?String) 82: @config.get_ready 83: @configured= true 84: @server=arg 85: elsif (arg.kind_of?Name) 86: @config.get_ready 87: @configured= true 88: @server=arg 89: elsif (arg.kind_of?Hash) 90: arg.keys.each do |attr| 91: begin 92: send(attr.to_s+"=", arg[attr]) 93: rescue Exception 94: Dnsruby.log.error{"Argument #{attr} not valid\n"} 95: end 96: # end 97: end 98: end 99: #Check server is IP 100: # @server=Config.resolve_server(@server) 101: isr = PacketSender.new(*args) 102: # isr.server = @server 103: @single_resolvers = [isr] 104: 105: # ResolverRegister::register_single_resolver(self) 106: end
Add the appropriate EDNS OPT RR for the specified packet. This is done automatically, unless you are using Resolver#send_plain_message
# File lib/Dnsruby/SingleResolver.rb, line 143 143: def add_opt_rr(m) 144: @single_res_mutex.synchronize { 145: @single_resolvers[0].add_opt_rr(m) 146: } 147: end
# File lib/Dnsruby/SingleResolver.rb, line 136 136: def packet_timeout=(t) 137: @packet_timeout = t 138: @query_timeout = t 139: end
# File lib/Dnsruby/SingleResolver.rb, line 119 119: def server 120: # @single_res_mutex.synchronize { 121: if (!@configured) 122: @config.get_ready 123: add_config_nameservers 124: end 125: return @single_resolvers[0].server 126: # } 127: end