| 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